Доброго времени суток, форумчане! Появилась необходимость автоматически удалиять пустые строки в таблице. Точно помню, что где-то на форуме видел подобное, но поиск не помогает. Может кто поможет найти? И прикладывать пример вреде нет необходимости. Большое спасибо!
Доброго времени суток, форумчане! Появилась необходимость автоматически удалиять пустые строки в таблице. Точно помню, что где-то на форуме видел подобное, но поиск не помогает. Может кто поможет найти? И прикладывать пример вреде нет необходимости. Большое спасибо!Мур
Sub DeleteEmptyStrings() Dim intLastRow As Integer ' Номер последней используемой строки Dim intRow As Integer ' Номер проверяемой строки
' Получение номера последней используемой строки intLastRow = Worksheets(ActiveSheet.Index).UsedRange.Row + _ Worksheets(ActiveSheet.Index).UsedRange.Rows.Count - 1 ' Счетчик устанавливается на используемую первую строку intRow = Worksheets(ActiveSheet.Index).UsedRange.Row ' Удаление пустых строк Do While intRow <= intLastRow If ActiveSheet.Rows(intRow).Text = "" Then ' Удаление строки ActiveSheet.Rows(intRow).Delete ' Данные сдвинулись вверх, поэтому номер последней _ строки уменьшился, а текущей - не изменился intLastRow = intLastRow - 1 Else ' Текущая строка заполнена - переходим к следующей intRow = intRow + 1 End If Loop End Sub
[/vba]
[vba]
Код
Sub DeleteEmptyStrings() Dim intRow As Integer Dim intLastRow As Integer
' Получение номера последней используемой строки intLastRow = ActiveSheet.UsedRange.Row + _ ActiveSheet.UsedRange.Rows.Count - 1
' Удаление пустых строк For intRow = intLastRow To 1 Step -1 If ActiveSheet.Rows(intRow).Text = "" Then ActiveSheet.Rows(intRow).Delete End If Next intRow End Sub
[/vba]
Здравствуйте.
ЦитатаМур
где-то на форуме видел подобное, но поиск не помогает.
Sub DeleteEmptyStrings() Dim intLastRow As Integer ' Номер последней используемой строки Dim intRow As Integer ' Номер проверяемой строки
' Получение номера последней используемой строки intLastRow = Worksheets(ActiveSheet.Index).UsedRange.Row + _ Worksheets(ActiveSheet.Index).UsedRange.Rows.Count - 1 ' Счетчик устанавливается на используемую первую строку intRow = Worksheets(ActiveSheet.Index).UsedRange.Row ' Удаление пустых строк Do While intRow <= intLastRow If ActiveSheet.Rows(intRow).Text = "" Then ' Удаление строки ActiveSheet.Rows(intRow).Delete ' Данные сдвинулись вверх, поэтому номер последней _ строки уменьшился, а текущей - не изменился intLastRow = intLastRow - 1 Else ' Текущая строка заполнена - переходим к следующей intRow = intRow + 1 End If Loop End Sub
[/vba]
[vba]
Код
Sub DeleteEmptyStrings() Dim intRow As Integer Dim intLastRow As Integer
' Получение номера последней используемой строки intLastRow = ActiveSheet.UsedRange.Row + _ ActiveSheet.UsedRange.Rows.Count - 1
' Удаление пустых строк For intRow = intLastRow To 1 Step -1 If ActiveSheet.Rows(intRow).Text = "" Then ActiveSheet.Rows(intRow).Delete End If Next intRow End Sub
Sub www() Dim i& With ActiveSheet.UsedRange For i = 1 To .Columns.Count .AutoFilter Field:=i, Criteria1:="=" Next .Offset(1).SpecialCells(12).EntireRow.Delete End With: ActiveSheet.AutoFilterMode = 0 End Sub
[/vba]
Так пошустрей будет: [vba]
Код
Sub www() Dim i& With ActiveSheet.UsedRange For i = 1 To .Columns.Count .AutoFilter Field:=i, Criteria1:="=" Next .Offset(1).SpecialCells(12).EntireRow.Delete End With: ActiveSheet.AutoFilterMode = 0 End Sub
Ребята, всем спасибо. Взял первый попавшийся с конца код, автор (KuklP), работает вроде нормально. Остальные варианты потом посмотрю, время поджимает. Еще раз спасибо!
Ребята, всем спасибо. Взял первый попавшийся с конца код, автор (KuklP), работает вроде нормально. Остальные варианты потом посмотрю, время поджимает. Еще раз спасибо!Мур