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