Приветствую всех читателей! В данной статье мы рассмотрим процедуру "УдалениеПустыхСтрок", предназначенную для удаления всех пустых строк в активном рабочем листе. Эта процедура отличается хорошей эффективностью, так как она не проверяет каждую строку, а сканирует только те строки, которые входят в так называемый "используемый диапазон" (я заполнил диапазон "A1:F2001" случайными целыми числами от 1 до 10 и создал случайные пустые строки в этом диапазоне). Этот диапазон определяется свойством UsedRange объекта Worksheet.
Подробное объяснение процедуры в конце статьи, а сейчас в общих чертах. Итак:
Первый этап - определение номера последней используемой строки и присвоение этого значения переменной "ПоследняяСтрока". Это довольно сложная задача, так как используемый диапазон не обязательно начинается с первой строки. Таким образом, значение "ПоследняяСтрока" вычисляется путем добавления количества строк используемого диапазона к номеру первой строки текущего диапазона и вычитается 1.
В данной процедуре используется функция Excel "СЧЁТЗ()", чтобы определить, является ли строка пустой. Если функция возвращает 0 для определенной строки, то эта строка считается пустой. Следует отметить, что процедура сканирует строки снизу-вверх и использует отрицательное значение шага в цикле "For Next". Это необходимо, поскольку при удалении строки все последующие строки перемещаются вверх на рабочем листе. Если цикл сканировал бы сверху вниз, то значение счетчика цикла после удаления строки было бы неверным.
А ещё мы используем переменную "УдаленнаяСтрока", которая подсчитывает количество удаленных строк. Это значение отображается в сообщении по завершении процедуры.
И конечно, давайте разберем эту процедуру по шагам:
- Dim ПоследняяСтрока As Long: Объявляем переменную "ПоследняяСтрока" типа Long, которая будет содержать номер последней используемой строки.
- Dim r As Long: Объявляем переменную "r" типа Long, которая будет использоваться в цикле для итерации по строкам.
- Dim УдаленнаяСтрока As Long: Объявляем переменную "УдаленнаяСтрока" типа Long, которая будет использоваться для подсчета количества удаленных строк.
- Application.ScreenUpdating = False: Отключаем обновление экрана при выполнении процедуры, чтобы ускорить ее выполнение.
- ПоследняяСтрока = ActiveSheet.UsedRange.Rows.Count + ActiveSheet.UsedRange.Rows(1).Row - 1:Определяем переменную "ПоследняяСтрока", вычисляя количество строк используемого диапазона и прибавляя к нему номер первой строки, а затем вычитаем 1.
- For r = ПоследняяСтрока To 1 Step -1: Запускаем цикл, который будет итерироваться от последней строки до первой с шагом -1 (снизу-вверх).
- If Application.WorksheetFunction.CountA(Rows(r)) = 0 Then:Проверяем, является ли строка пустой, используя функцию "СЧЁТЗ()" из Excel. Если строка пуста, переходим к следующему шагу.
- Rows(r).Delete:Удаляем текущую строку, если она пуста.
- УдаленнаяСтрока = УдаленнаяСтрока + 1: Увеличиваем счетчик удаленных строк.
- Next r: Завершаем цикл и переходим к следующей итерации.
- Application.ScreenUpdating = True: Восстанавливаем обновление экрана.
- MsgBox УдаленнаяСтрока & " Удалены пустые строки.": Выводим сообщение с количеством удаленных пустых строк после завершения процедуры.