我正在尝试使用 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",这让我感到困惑,因为确实有一个 next 和一个 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
通常这意味着另一个嵌套代码(选择大小写,if,do while,with...(尚未完成,但您已经循环\停止了前一个。
在您的情况下,如果