Четверг, Сентябрь 24, 2020

Удаление всех пустых строк

'Первый шаг — определить последнюю используемую строку и присвоить этот номер
'строки переменной LastRow. Это не так просто, как можно ожидать, поскольку текущий
'диапазон необязательно начинается со строки 1. Следовательно, значение LastRow
'вычисляется таким образом: к найденному количеству строк используемого диапазона
'прибавляется номер первой строки текущего диапазона и вычитается 1.
'В процедуре применена функция Excel СЧЁТЗ (COUNTA), определяющая, является
'ли строка пустой. Если данная функция для конкретной строки возвращает 0, то эта
'строка пустая. Обратите внимание, что процедура просматривает строки снизу вверх
'и использует отрицательное значение шага в цикле For-Next. Это необходимо, поскольку
'при удалении все последующие строки перемещаются “вверх” в рабочем листе.
'Если бы в цикле просмотр выполнялся сверху вниз, то значение счетчика цикла после
'удаления строки оказалось бы неправильным.
'В макросе используется еще одна переменная, Counter, с помощью которой подсчитывается
'количество удаленных строк. Эта величина отображается в окне сообщения
'по завершении процедуры.

Sub DeleteEmptyRows()
    Dim LastRow As Long
    Dim r As Long, Counter As Long
    Application.ScreenUpdating = False
    LastRow = ActiveSheet.UsedRange.Rows.count + _
        ActiveSheet.UsedRange.Rows(1).Row - 1
    For r = LastRow To 1 Step -1
        If Application.WorksheetFunction.CountA(Rows(r)) = 0 Then
            Rows(r).Delete
            Counter = Counter + 1
        End If
    Next r
    Application.ScreenUpdating = True
    MsgBox Counter & " пустые строки удалены."
End Sub

Back to Top