Страницы: 1
RSS
Использовать ошибку при выполнении макроса
 
Приветствую всех!

Я пытаюсь воспользоваться макросом:

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 при каждом срабатывании макроса, а надо только при ошибке.

Два дня искал в поиске по сайту, не нашел. :-(
Я соображаю, но не всегда. :-)
 
if Err <> 0 then: msgbox ("Выделять строки можно только подряд!"): end if

так не пробовали?
Учимся сами и помогаем другим...
 
Пробовал. Все равно выдает msgbox при каждом срабатывании макроса. :-(
Я соображаю, но не всегда. :-)
 
;)
 
Спасибо LVL, но если я форматирую как таблицу, а строки выделяю не подряд, а например строку 5 и строку 6 (латинским знаком "a"), то макрос выдает ошибку.
Я соображаю, но не всегда. :-)
 
Попробовал вот так:
   If Err <> 0 Then
   On Error Resume Next: MsgBox ("Выделять строки можно только подряд")
   End If
Просто выдает ошибку 400 и все.

Пробовал так:
if Err <> 0 then: msgbox ("Выделять строки можно только подряд!"): end if
Переводит в режим редактирования VBA и выдает сообщение: "End if without block If".
Я соображаю, но не всегда. :-)
 
if Err <> 0 then msgbox ("Выделять строки можно только подряд!")
так?
Учимся сами и помогаем другим...
 
Я уже думал не форматировать как таблица (тогда макрос работает без ошибок), но по другому ни как. Потому что данные в этой таблице будут представлять основу для формирования сводной таблицы и чтобы проще было объяснить сводной таблице каков ее диапазон я ее планирую просто завязать на этот диапазон форматированный как таблица. Так мне кажется проще.
Я соображаю, но не всегда. :-)
 
Пробовал еще так:
   If Error <> 0 Then
       On Error Resume Next: MsgBox ("Выделять строки можно только подряд!")
   End If
тогда MsgBox выдает при каждом срабатывании макроса.
Я соображаю, но не всегда. :-)
 
ber$erk, выдает просто ошибку 400. Я попытался так:   If Err <> 0 Then On Error Resume Next: MsgBox ("Выделять строки можно только подряд!"), тоже не работает.
Я соображаю, но не всегда. :-)
 
файл приложите
Учимся сами и помогаем другим...
 
Я бы приложил файл, но боюсь прикладывать файл с расширением .xlsb. На сколько я помню в правилах говориться, что прикладывать можно только файлы . xls.
Я соображаю, но не всегда. :-)
 
Цитата
grant84 пишет:
но по другому ни как. проще было объяснить сводной таблице каков ее диапазон
А почем бы не применить в таком случае именованный динамический диапазон? Тоже будет определять границы сам, но уже не нужна будет таблица.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
ну на почту пришлите тогда
Учимся сами и помогаем другим...
 
Цитата
grant84 пишет:
Я бы приложил файл, но боюсь прикладывать файл с расширением .xlsb. На сколько я помню в правилах говориться, что прикладывать можно только файлы . xls.
Плохо помните. Есть еще .rar и другие упаковщики. Запакуйте и выкладывайте.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Да The_Prist, сейчас перечитал правила.

А на счет именного диапазона гениальная мысль, попробую сейчас. Что-то я про это совсем забыл.
Я соображаю, но не всегда. :-)
 
Цитата
grant84 пишет:
Я бы приложил файл, но боюсь прикладывать файл с расширением .xlsb
Читаем список разрешённых типов: "Разрешенные расширения файлов: xls,xlsx,xlsm,xlsb,xla,xlam,doc,docx,docm,txt,csv,pdf,jpg,gif,png,zip,rar "
Страницы: 1
Наверх