Как удалить пустые строки в vba (с примерами)


Вы можете использовать следующие методы в VBA для удаления пустых строк:

Способ 1: удалить пустые строки в определенном диапазоне

 Sub DeleteEmptyRowsInRange()
    Sheets(" Sheet1 ").Select
    Range(" A1:B10 ").Select
    Selection.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub

Этот конкретный макрос удалит все пустые строки из диапазона A1:B10 Sheet1 .

Способ 2: удалить пустые строки на всем листе

 Sub DeleteEmptyRowsInSheet()
  
   'turn off screen updating for faster performance
    Application.ScreenUpdating = False
  
    Dim i As Long

    With ActiveSheet

    For i = .Cells.SpecialCells(xlCellTypeLastCell).Row To 1 Step -1
        If WorksheetFunction.CountA(.Rows(i)) = 0 Then
            ActiveSheet.Rows(i).Delete
       End If
    Next

    End With
  
    'turn screen updating back on
    Application.ScreenUpdating = True
  
End Sub

Этот конкретный макрос удалит все пустые строки со всего активного листа.

Следующие примеры показывают, как использовать каждый метод на практике.

Пример 1. Удаление пустых строк в определенном диапазоне

Допустим, у нас есть следующий набор данных в Excel, содержащий информацию о различных баскетболистах:

Мы можем создать следующий макрос, чтобы удалить все пустые строки из диапазона A1:B10 на этом листе:

 Sub DeleteEmptyRowsInRange()
    Sheets(" Sheet1 ").Select
    Range(" A1:B10 ").Select
    Selection.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub

Запустив этот макрос, мы получим следующий вывод:

Обратите внимание, что все пустые строки были удалены из указанного нами диапазона.

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

Допустим, у нас есть следующий набор данных в Excel, содержащий информацию о различных баскетболистах:

Мы можем создать следующий макрос, чтобы удалить все пустые строки со всего листа:

 Sub DeleteEmptyRowsInSheet()
  
   'turn off screen updating for faster performance
    Application.ScreenUpdating = False
  
    Dim i As Long

    With ActiveSheet

    For i = .Cells.SpecialCells(xlCellTypeLastCell).Row To 1 Step -1
        If WorksheetFunction.CountA(.Rows(i)) = 0 Then
            ActiveSheet.Rows(i).Delete
       End If
    Next

    End With
  
    'turn screen updating back on
    Application.ScreenUpdating = True
  
End Sub

Запустив этот макрос, мы получим следующий вывод:

Обратите внимание, что все пустые строки были удалены со всего листа.

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные задачи в VBA:

VBA: как удалить строки на основе значения ячейки
VBA: как удалить лист, если имя содержит определенный текст
VBA: как удалить файлы

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *