Повторение макроса на следующих строках - VBA

Узнай цену своей работы

Формулировка задачи:

Добрый день. Возможно подобная тема есть, но, к сожалению, я её не нашел. И так: есть макрос, который выполняет определенные действия в строчке. Необходимо сделать так, что бы после выполнения своих функций он перешел на следующую строку и проделал все функции еще раз. И так до тех пор, пока строки с данными не кончатся. Их может очень много (до 15 тысяч строк). Заранее благодарен за любую информацию.

Решение задачи: «Повторение макроса на следующих строках»

textual
Листинг программы
Sub УдалениеСтрокПоНесколькимУсловиям()
    Dim УдалятьСтрокиСТекстом
    Dim ra As Range, delra As Range, word
    Application.ScreenUpdating = False    ' отключаем обновление экрана
 
    ' ищем и удаляем строки, содержащие заданный текст
    ' (можно указать сколько угодно значений, и использовать подстановочные знаки)
    УдалятьСтрокиСТекстом = Array("Умножение", _
                                  "Официально поддерживаемые стандарты памяти", _
                                  "id сертификата", _
                                  "инструкция", _
                                  "id", _
                                  "partNumber", _
                                  "manufacturerCountry", _
                                  "gtdNumber", _
                                  "pictureID", _
                                  "гарантия", _
                                  "драйвер", _
                                  "rusName")
 
    ' перебираем все строки в используемом диапазоне листа
    For Each ra In ActiveSheet.UsedRange.Rows
        ' перебираем все фразы в массиве
        For Each word In УдалятьСтрокиСТекстом
            ' если в очередной строке листа найден искомый текст
            If Not ra.Find(word, , xlValues, xlPart) Is Nothing Then
                ' добавляем строку в диапазон для удаления
                If delra Is Nothing Then Set delra = ra Else Set delra = Union(delra, ra)
                Exit For    ' Вот здесь понадобился выход из цикла
            End If
        Next word
    Next
    Debug.Print delra.Address    'Для чтоб убедиться, что всё сработало как надо
    If Not delra Is Nothing Then delra.EntireRow.Delete    ' удаляем их
    Application.ScreenUpdating = True    ' Включаем обратно обновление экрана!!!
 
End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.9 из 5
Похожие ответы