Excel VBA Макросы. Удалить строки с определенным значением с помощью макроса.

Автор Посетитель, 20 августа 2017, 14:28

Посетитель

Есть две колонки ("A","B") по 220 строк. Надо удалить строки целиком, если в колонке "B" стоит определенное значение - 0 или "Занято".

Я написал макрос, но при удалении первого попавшегося значения 0 или "Занято" строки смещаются, и на место, например, строки 2 становится строка 3, где тоже значение "0". Но макрос уже переходит к следующей строке. Следовательно макрос приходится прогонять несколько раз чтобы удалить все.

Как сделать так, чтобы все строки удалялись за один прогон?

Администратор

Перед удалением строк нужно отключить обновление монитора, это очень существенно ускоряет макрос.
Также можно отключить пересчёт формул, если много формул и макрос медленно работает.

Макрос
Sub DeleteRows()
   
    Dim i As Long
   
    Application.ScreenUpdating = False
   
    For i = 220 To 2 Step -1
        If Cells(i, "B").Value = 0 Or Cells(i, "B").Value = "Занято" Then
            Rows(i).Delete
        End If
    Next i
       
End Sub
[свернуть]