2016-10-06 4 views
0

У меня есть рабочий лист, у которого есть данные, начинающиеся с A84, распространяющиеся на столбец X. Я использую этот VBA для выбора всего диапазона данных.Excel VBA для удаления пустых строк в диапазоне

Dim Lastrow As Integer 
Lastrow = Range("A:Z").Find("*", , , , xlByRows, xlPrevious).Row 

Range("A84:X" & Lastrow).Select 

В этом выбранном диапазоне мне нужно определить, какие строки пусты от столбцов А до Я и удалить их. Если после столбца Z есть данные, строка должна быть удалена, потому что я рассматриваю ее как пустое.

+2

петли в обратном направлении по строкам диапазона: 'Для я = Lastrow до 84 шага -1' затем:' Если Application.WorkSheetFormula.CountA (диапазон (клетки (I, 1), клетки (i, 26))) = 0 Затем строки (i). Удалить' –

+0

@ScottCraner Извините. Я мог бы сделать что-то неправильно, но я получаю синтаксическую ошибку, когда я запускаю ее. – Robby

+0

Какая ошибка и на какой строке? –

ответ

2

В комментариях иногда добавляются символы. Вот код:

Dim Lastrow As Integer 
Lastrow = Range("A:Z").Find("*", , , , xlByRows, xlPrevious).Row 


For i = Lastrow To 84 Step -1 
    If Application.CountA(Range(Cells(i, 1), Cells(i, 26))) = 0 Then Rows(i).Delete 
Next i 
+0

Теперь я получаю эту ошибку: Ошибка времени выполнения «438»: объект не поддерживает это свойство или метод. И это то, что выделено: 'If Application.WorkSheetFormula.CountA (Диапазон (ячейки (i, 1), ячейки (i, 26))) = 0 Then' – Robby

+0

Подождите. Должна ли быть Application.WorkSheetFunction вместо ApplicationWorkSheetFormula? Я сделал это изменение, и он работает. – Robby

+0

@Robby это то, что я получаю, просто набрав его в ответе. Да, или как редактировать выше. Полностью удалите часть WorkSheetFunction. –

Смежные вопросы