编译错误:下一步没有按月过滤每个ws

时间:2017-08-21 13:59:37

标签: excel vba excel-vba for-loop filter

我正在尝试使用for循环来过滤当前月份中此工作簿中的每个ws。这就是它现在所处的位置

    Sub curmonth()

Dim ws As Worksheet

On Error Resume Next

For Each ws In ThisWorkbook.Worksheets
    If ws.Visible Then

 ' filter each worksheet by current month
    Range("A:G").AutoFilter Field:=5, Operator:=xlAnd, _
 Criteria1:=">" & Application.EoMonth(Now, -1), _
 Criteria2:="<=" & Application.EoMonth(Now, 0)



Next ws
On Error GoTo 0


End Sub

它一直给我错误“编译错误:下一个没有FOR”,这对我来说很困惑,因为确实存在下一个和一个for。

2 个答案:

答案 0 :(得分:1)

您错过了End If声明。另外,将Range("A:G")...更改为ws.Range("A:G")...。通过这些更改,您的For循环应为:

For Each ws In ThisWorkbook.Worksheets
    If ws.Visible Then

        ' filter each worksheet by current month
        ws.Range("A:G").AutoFilter Field:=5, Operator:=xlAnd, _
            Criteria1:=">" & Application.EoMonth(Now, -1), _
            Criteria2:="<=" & Application.EoMonth(Now, 0)
    End If
Next ws

答案 1 :(得分:0)

通常它意味着另一个嵌套代码(select case,if,do while,with ...)没有完成,但你已经循环\停止了先例。

在你的情况下,如果

,你就错过了一个结局