【问题标题】:Compile Error: Next without FOR Filtering each ws by month编译错误:下一步没有按月过滤每个 ws
【发布时间】:2018-01-29 15:24:36
【问题描述】:

我正在尝试使用 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
  • 您错过了End If 声明。另外,将Range("A:G")... 更改为ws.Range("A:G")...
  • @RafaelMatos 有时间回答这个问题吗?

标签: vba excel for-loop filter


【解决方案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

【讨论】:

    【解决方案2】:

    通常这意味着另一个嵌套代码(select case、if、do while、with...)尚未完成,但您已经循环\停止了前面的代码。

    在你的情况下,如果

    【讨论】:

      猜你喜欢
      • 2022-01-04
      • 2018-06-26
      • 1970-01-01
      • 2021-07-12
      • 2021-02-18
      • 1970-01-01
      • 2021-06-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多