Здравствуйте! Возникла сложность на ровном месте. Вот рабочий макрос: [vba]
Код
Sub Удаление_стр_с_тегами()
' удалить строку, если в ячейках.. есть символ "<"
Application.ScreenUpdating = 0
Dim n&, i&, r As Range
n = Cells(Rows.Count, "a").End(xlUp).Row For i = 2 To n
If InStr(Cells(i, "g"), "<") > 0 Then If r Is Nothing Then Set r = Cells(i, "g").EntireRow Else Set r = Union(r, Cells(i, "g").EntireRow) If InStr(Cells(i, "l"), "<") > 0 Then If r Is Nothing Then Set r = Cells(i, "l").EntireRow Else Set r = Union(r, Cells(i, "l").EntireRow) If InStr(Cells(i, "m"), "<") > 0 Then If r Is Nothing Then Set r = Cells(i, "m").EntireRow Else Set r = Union(r, Cells(i, "m").EntireRow) If InStr(Cells(i, "n"), "<") > 0 Then If r Is Nothing Then Set r = Cells(i, "n").EntireRow Else Set r = Union(r, Cells(i, "n").EntireRow) If InStr(Cells(i, "o"), "<") > 0 Then If r Is Nothing Then Set r = Cells(i, "o").EntireRow Else Set r = Union(r, Cells(i, "o").EntireRow)
Next r.Delete Shift:=xlUp
Application.ScreenUpdating = 1
End Sub
[/vba]
Но он отказывается работать, если по заданным параметрам не нашлось совпадений. Он выдаёт ошибку, если в тексте нет символа "<". Если есть хоть одно совпадение - работает хорошо. Скажите пожалуйста, где я ошибся?
Здравствуйте! Возникла сложность на ровном месте. Вот рабочий макрос: [vba]
Код
Sub Удаление_стр_с_тегами()
' удалить строку, если в ячейках.. есть символ "<"
Application.ScreenUpdating = 0
Dim n&, i&, r As Range
n = Cells(Rows.Count, "a").End(xlUp).Row For i = 2 To n
If InStr(Cells(i, "g"), "<") > 0 Then If r Is Nothing Then Set r = Cells(i, "g").EntireRow Else Set r = Union(r, Cells(i, "g").EntireRow) If InStr(Cells(i, "l"), "<") > 0 Then If r Is Nothing Then Set r = Cells(i, "l").EntireRow Else Set r = Union(r, Cells(i, "l").EntireRow) If InStr(Cells(i, "m"), "<") > 0 Then If r Is Nothing Then Set r = Cells(i, "m").EntireRow Else Set r = Union(r, Cells(i, "m").EntireRow) If InStr(Cells(i, "n"), "<") > 0 Then If r Is Nothing Then Set r = Cells(i, "n").EntireRow Else Set r = Union(r, Cells(i, "n").EntireRow) If InStr(Cells(i, "o"), "<") > 0 Then If r Is Nothing Then Set r = Cells(i, "o").EntireRow Else Set r = Union(r, Cells(i, "o").EntireRow)
Next r.Delete Shift:=xlUp
Application.ScreenUpdating = 1
End Sub
[/vba]
Но он отказывается работать, если по заданным параметрам не нашлось совпадений. Он выдаёт ошибку, если в тексте нет символа "<". Если есть хоть одно совпадение - работает хорошо. Скажите пожалуйста, где я ошибся?emkub
Sub Удаление_стр_с_тегами() Dim i&, r As Range, s$ For i = 2 To Cells(Rows.Count, "a").End(xlUp).Row s = Cells(i, 7) & Cells(i, 12) & Cells(i, 13) & Cells(i, 14) & Cells(i, 15) If InStr(s, "<") Then If r Is Nothing Then Set r = Rows(i) Else Set r = Union(r, Rows(i)) Next If Not r Is Nothing Then r.Delete End Sub
[/vba]
Без некоторых ненужных телодвижений: [vba]
Код
Sub Удаление_стр_с_тегами() Dim i&, r As Range, s$ For i = 2 To Cells(Rows.Count, "a").End(xlUp).Row s = Cells(i, 7) & Cells(i, 12) & Cells(i, 13) & Cells(i, 14) & Cells(i, 15) If InStr(s, "<") Then If r Is Nothing Then Set r = Rows(i) Else Set r = Union(r, Rows(i)) Next If Not r Is Nothing Then r.Delete End Sub