【问题标题】:Continue FOR-NEXT loop even if IF-THEN condition not met即使不满足 IF-THEN 条件,也继续 FOR-NEXT 循环
【发布时间】:2019-08-09 06:44:53
【问题描述】:

只要满足 IF-THEN 条件,我当前的 FOR-NEXT 循环就可以工作。但是,只要不满足 IF-THEN 条件,循环就会停止。我希望循环继续,即使不满足 IF-THEN 条件。我想检查表中的所有行。 VBA 新手。任何帮助表示赞赏。

Dim EngHisTable As ListObject

Set EngHisTable = Sheets("Historic").ListObjects("Table2")

Dim WeekCode As String
WeekCode = Sheets("Weekly").Range("B5").Value

For x = EngHisTable.ListRows.Count To 1 Step -1

    If EngHisTable.ListRows(EngHisTable.ListRows.Count).Range(, 15) = WeekCode Then
        EngHisTable.ListRows(EngHisTable.ListRows.Count).Delete
    End If

Next x

【问题讨论】:

  • 您实际上并没有在循环中使用x...

标签: excel vba loops if-statement


【解决方案1】:

您实际上并没有在循环中使用x。如果你这样做,它看起来像这样:

For x = EngHisTable.ListRows.Count To 1 Step -1
    If EngHisTable.ListRows(x).Range(, 15) = WeekCode Then
        EngHisTable.ListRows(x).Delete
    End If
Next x

或者,您可以一次性过滤并删除与WeekCode对应的所有行,而不是逐行循环:

Sub MyDelete()
    Dim EngHisTable As ListObject
    Set EngHisTable = Sheets("Historic").ListObjects("Table2")

    Dim WeekCode As String
    WeekCode = Sheets("Weekly").Range("B5").Value

    With EngHisTable
        .Range.AutoFilter Field:=15, Criteria1:=WeekCode

        On Error Resume Next
        Dim rngToDelete As Range
        Set rngToDelete = .DataBodyRange.SpecialCells(xlCellTypeVisible)
        On Error GoTo 0

        .AutoFilter.ShowAllData
        If Not rngToDelete Is Nothing Then rngToDelete.Delete xlShiftUp
    End With
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-10
    • 1970-01-01
    • 2021-03-11
    • 1970-01-01
    • 2017-02-03
    • 2016-03-14
    • 1970-01-01
    • 2023-04-02
    相关资源
    最近更新 更多