2017-08-21 22 views
1

我正在嘗試使用for循環來篩選當前月份中此工作簿中的每個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」,這是對我百思不得其解,因爲確實是下一個和。

+4

嘗試把一個'結束如果'。 – Jeeped

+5

您錯過了'End If'語句。另外,將'Range(「A:G」)...'改爲'ws.Range(「A:G」)...' –

+1

@RafaelMatos有時間做出答案? – Jeeped

回答

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 
0

它通常意味着其他嵌套碼(選擇的情況下,如果同時做,用...)還沒有完成,但你已經循環\停止先例一。

在你的情況下,你錯過了一個結尾,如果