VBA - удалить все строки, пока не найдет запрошенное значение

Не могли бы вы мне посоветовать, что я делаю неправильно в приведенном ниже коде, пожалуйста?

У меня есть файл Excel с переменным количеством данных. Лист данных разбит на части, и мне нужно будет удалить вторую часть. 2-я часть данных начинается со слова "Одна или обе стороны не в Ico Loan Facility" в столбце A. Поэтому в основном я думал, что начну искать сзади и удалять каждую строку, пока не обнаружит, что ячейка содержит искомую фразу, затем это остановится.

Код удаляет все до A3, даже 1-ю часть данных. Есть ли у вас какие-либо советы, пожалуйста?

Private Sub Remove_part2()

Dim i As Long
Dim LastRow As Long
Dim r As Range

With Worksheets("Hyperion Data (Original)")
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row

Set r = Range("A3", "A" & Rows.Count).Find(What:="One or both Parties Not in Ico Loan Facility", LookIn:=xlValues, LookAt:=xlPart, SearchDirection:=xlNext, MatchCase:=False)

For i = LastRow To 3 Step -1

If Not r Is Nothing Then
  ActiveSheet.Rows(i).EntireRow.Delete
End If
Next i

End With
End Sub

1 ответ

Решение

Как насчет следующего:

Private Sub Remove_part2()
Dim i As Long
Dim LastRow As Long
Dim r As Range
Dim ws As Worksheet: Set ws = Worksheets("Hyperion Data (Original)")

With ws
    LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
    Set r = .Range("A3", "A" & .Rows.Count).Find(What:="One or both Parties Not in Ico Loan Facility", LookIn:=xlValues, LookAt:=xlPart, SearchDirection:=xlNext, MatchCase:=False)
    If Not r Is Nothing Then
        For i = LastRow To r.Row Step -1
            ws.Rows(i).EntireRow.Delete
        Next i
    Else
        MsgBox "Criteria Not Found!", vbInformation
    End If
End With
End Sub
Другие вопросы по тегам