2016-06-13 2 views
0

Я ищу для создания макроса, который удаляет все строки, которые не содержат данных в столбце B. Любая помощь будет оценена. Это все, что я получил сейчас.Удаление всех строк, которые имеют пустую колонку «B», используя VBA

Sub DeleteAllEmptyBRows() 
Dim lr As Long 
lr = Cells(Rows.Count, "B").End(xlUp).Row 
    For Each cell In Range("B1:B" & lr) 
     If cell.Value = "" Then 
      cell.Row.Delete 
      Exit Sub 
     End If 
    Next cell 
End Sub 

ответ

3

Вы можете использовать SpecialCells, чтобы сделать это в одной быстрой линии:

Range("B:B").SpecialCells(xlCellTypeBlanks).EntireRow.Delete

Я бы использовать выше, но и для собственных знаний, вот как вы можете это сделать следующий ваш код:

Sub DeleteAllEmptyBRows() 
Dim lr As Long, i& 

lr = Cells(Rows.Count, "B").End(xlUp).Row 

For i = lr To 1 Step -1 'Since you're deleting rows, start at the end, and work upwards 
    If Cells(i, 2).Value = "" Then 
     Cells(i, 2).EntireRow.Delete 
    End If 
Next i 

End Sub 

Обратите внимание, что у вас есть в вашем в Exit Sub, после того, как в первый раз удаляется строка. Я удалил это, так как вы хотите перебрать все ячейки в диапазоне. Опять же, это петля, поэтому потребуется больше времени и больше места для ошибок, чем простой один вкладыш выше.

+1

Реализованного Я забыл поблагодарить вас. Это прекрасно, большое вам спасибо! – Rob

1

Вы отсутствуете некоторые параметры:

Cells(cell.Row, 2).Delete Shift:=xlUp 

Если вам нужна вся строка, просто изменить на:

cell.Row.EntireRow.Delete 
Смежные вопросы