VBA编译错误:预期的命名参数

时间:2013-11-06 16:18:07

标签: excel-vba vba excel

我是VBA的新手,并将这个宏拼凑在一起,搜索“如何在excel中的两个特定日期之间进行过滤”。我试图让它从两个单元格中读取日期,并将显示的数据限制为这些日期之间的数据。工作簿的输入数据是一个随时间增长的SQL表,因此我需要将范围的左边界作为最后一行,并在其中包含值。我的AutoFilter部件中的每一行都返回“预期命名参数”错误,并突出显示:=符号。从论坛我读到这是因为使用VBA保留字作为变量名,但我不认为在这种情况下就是这种情况。
这是我的代码:

Public Sub MyFilter()
.AutoFilterMode = False
Dim datRight, datLeft As Date
Dim lastRow As Long
datLeft = Range("J1").Value
datRight = Range("J2").Value
lastRow = Range("A:A").Find("*", Range("A2"), searchdirection:=xlPrevious).Row
ActiveSheet.Range("F2:F" & lastRow).AutoFilter Field:=7,
Criteria1:=">=" & datLeft, _
Operator:= xlAnd,
Criteria2:="<=" & datRight, VisibleDropDown:=True
End Sub

1 个答案:

答案 0 :(得分:0)

  1. 您将收到的第一个错误是.AutoFilterMode = False行。请注意自动过滤前的DOT。您必须使用相关表格对其进行限定。例如,ThisWorkbook.Sheets("Sheet1").AutoFilterMode = False

  2. 当您尝试使用*查找lastrow时,请始终使用THIS中提到的方法,否则如果工作表为空,则会出现错误。

  3. 您的声明Dim datRight, datLeft As Date。在VBA中,只有最后一个变量将声明为Date,第一个变量将声明为Variant。将其更改为Dim datRight As Date, datLeft As Date如果J1J2值不是日期值,那么您将收到错误。

  4. 现在你的问题。您收到该错误是因为您缺少连续字符_

    试试这个

    ActiveSheet.Range("F2:F" & lastRow).AutoFilter Field:=7, _
    Criteria1:=">=" & datLeft, _
    Operator:=xlAnd, _
    Criteria2:="<=" & datRight, VisibleDropDown:=True