VBA:未找到命名的参数,Multiple。

时间:2017-03-15 18:18:12

标签: excel vba excel-vba

我一直试图让VBA搜索一列单元格(将由用户填充)以查找特定条件。在与WorksheetFunction.CountIfs挣扎之后(我已经确定了这个代码,到目前为止,它似乎有效:

Sub CalendarColor()

Call VarDef

Dim SearchEmpList As Range
Dim SearchSDate As Range
Dim SearchEDate As Range
Dim SearchLType As Range
Dim SearchPType As Range

If EmpName <> "" Then
    With Worksheets(2).Range("B:B") 'Search all of Employee Name list entries
        Set SearchEmpList = .Find(What:=EmpName, _
                                  After:=.Cells(.Cells.Count), _
                                  LookIn:=xlValues, _
                                  LookAt:=xlWhole, _
                                  SearchOrder:=xlByRows, _
                                  SearchDirection:=xlNext, _
                                  MatchCase:=False)
    End With

这是第一列和必须识别的第一个变量。为了继续相关的开始日期,我添加了以下代码:

    With Worksheets(2).Range("C:C") 'Search all of Start Date list entries
        Set SearchSDate = .Find(What:=ActiveCell.Value, _
                                After:=.Cells(.Cells.Count), _
                                LookIn:=xlValues, _
                                LookAt:=xlWhole, _
                                SeachOrder:=xlByRows, _
                                SeachDirection:=xlNext, _
                                MatchCase:=False)
    End With

在我看来,这是完全相同的,但是当我使用step-into进行调试时,我得到了“运行时错误'448':找不到命名参数”。

是ActiveCell.Value吗?如果是这样,我还能使用什么?这个脚本将用在一个循环脚本中,每次迭代都会偏移1次 - 所以如果它完全有效,那么ActiveCell似乎最合理。

循环脚本如下所示:

Sub ColorLoop()

Dim EndNumberA As Integer '31 day months
Dim EndNumberB As Integer '30 day months
Dim EndnumberC As Integer '28 day months
Dim EndNumberD As Integer '29 day months
Dim i As Integer

EndNumberA = 31
EndNumberB = 30
EndnumberC = 28
EndNumberD = 29

'Offset commands need to be tweaked each year to ensure the ActiveCell lands on the first day of the next month

'January 31d
For i = 1 To EndNumberA
    Call CalendarColor
    ActiveCell.Offset(, 1).Select
Next i

'Set ActiveCell to Feb1
ActiveCell.Offset(1, -28).Select

'February 28d (Use EndNumberD if leap year)
For i = 1 To EndnumberC
    'Call CalendarColor
    ActiveCell.Offset(, 1).Select
Next i

'Set ActiveCell to Mar1
ActiveCell.Offset(1, -28).Select

我在学习VBA大约两周(以及我在这里的第一篇文章),所以无论你有什么是欢迎信息。

1 个答案:

答案 0 :(得分:0)

SeachOrder:=xlByRows, _
SeachDirection:=xlNext, _

这些都是错别字。搜索没有搜索!