Приветствую всех!
Я пытаюсь воспользоваться макросом:
Sub УдалениеСтрокПоУсловию()
Dim ra As Range, delra As Range, ТекстДляПоиска As String
Application.ScreenUpdating = False ' отключаем обновление экрана
ТекстДляПоиска = "a" ' удаляем строки с таким текстом
' перебираем все строки в используемом диапазоне листа
For Each ra In ActiveSheet.UsedRange.Rows
' если в строке найден искомый текст
If Not ra.Find(ТекстДляПоиска, , xlValues, xlPart) Is Nothing Then
' добавляем строку в диапазон для удаления
If delra Is Nothing Then Set delra = ra Else Set delra = Union(delra, ra)
End If
Next
On Error Resume Next
' если подходящие строки найдены - удаляем их
If Not delra Is Nothing Then delra.EntireRow.Delete
End Sub
НО проблема в том, что строки которые нудно удалять этим макросом отформатированы как таблица и если строки выделенные знаком "a" стоят не подряд, то он выдает ошибку. Ошибку удалось ликвидировать строчкой "On Error Resume Next", но мне бы хотелось, чтобы еще выдавало MSgBox ("Выделять строки можно только подряд!"). Чтобы пользователь знал почему выделенные строки не удалились.
В итоге если я вставляю if error <> 0 then msgbox ("Выделять строки можно только подряд!") tnd if, он выдает этот msgbox при каждом срабатывании макроса, а надо только при ошибке.
Два дня искал в поиске по сайту, не нашел. :-(
Я пытаюсь воспользоваться макросом:
Sub УдалениеСтрокПоУсловию()
Dim ra As Range, delra As Range, ТекстДляПоиска As String
Application.ScreenUpdating = False ' отключаем обновление экрана
ТекстДляПоиска = "a" ' удаляем строки с таким текстом
' перебираем все строки в используемом диапазоне листа
For Each ra In ActiveSheet.UsedRange.Rows
' если в строке найден искомый текст
If Not ra.Find(ТекстДляПоиска, , xlValues, xlPart) Is Nothing Then
' добавляем строку в диапазон для удаления
If delra Is Nothing Then Set delra = ra Else Set delra = Union(delra, ra)
End If
Next
On Error Resume Next
' если подходящие строки найдены - удаляем их
If Not delra Is Nothing Then delra.EntireRow.Delete
End Sub
НО проблема в том, что строки которые нудно удалять этим макросом отформатированы как таблица и если строки выделенные знаком "a" стоят не подряд, то он выдает ошибку. Ошибку удалось ликвидировать строчкой "On Error Resume Next", но мне бы хотелось, чтобы еще выдавало MSgBox ("Выделять строки можно только подряд!"). Чтобы пользователь знал почему выделенные строки не удалились.
В итоге если я вставляю if error <> 0 then msgbox ("Выделять строки можно только подряд!") tnd if, он выдает этот msgbox при каждом срабатывании макроса, а надо только при ошибке.
Два дня искал в поиске по сайту, не нашел. :-(
Я соображаю, но не всегда. :-)