编译错误:下一步没有按月筛选每个ws

我正在尝试使用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”,这是令人费解的,因为确实有一个下一个和一个。

你错过了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 

通常这意味着其他嵌套代码(如果select大小写,如果…)没有完成,但是您已经循环\停止先前的代码。

在你的情况下,如果你错过了一个结束