Продолжайте цикл FOR-NEXT, даже если условие IF-THEN не выполнено - PullRequest
1 голос
/ 18 марта 2019

Мой текущий цикл FOR-NEXT работает до тех пор, пока выполняется условие IF-THEN. Однако, как только условие 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

1 Ответ

0 голосов
/ 18 марта 2019

Вы на самом деле не используете 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...