2016-06-29 3 views
1

Я пытаюсь очистить некоторые данные электронных таблиц, поэтому у меня был приведенный ниже код для удаления всех строк, для которых столбец 10 имеет номер 0. Проблема заключается в том, он удаляет все строки.Excel VBA- Удалить строки, где данные столбца ZERO

Может ли кто-нибудь указать, что именно не так с моим кодом?

Sub Format() 

Dim Fund As Long 
Dim TotalLoop As Long 

RowCount = Range("A65536").End(xlUp).Row 
For TotalLoop = RowCount To 2 Step -1 
Fund = Cells(TotalLoop, 10) 
If Fund = 0 Then 
Rows(TotalLoop).Delete 
Cells(TotalLoop - 1, 10) = Fund 
End If 
Next TotalLoop 

End Sub 
+0

Обратите внимание, что проверка 'Cells (TotalLoop, 10) = 0 'и возвращает истину, если ячейка пуста. Если вы этого не хотите, используйте 'Cells (TotalLoop, 10) = 0 И Cells (TotalLoop, 10) <>" "или' Ячейки (TotalLoop, 10) = "0" '(я бы использовал первый) , – arcadeprecinct

ответ

1

Просто удалите приведенную ниже строку и выполните свой код. Она будет работать

Cells(TotalLoop - 1, 10) = Fund 
+0

любезно отметим это как ответ, если он работает, нажав на значок галочки –

0

В вашем коде, вы изменяете значение следующего Восстановлено строки к значению фонда, который равен нулю для того, чтобы выполнение кода. Удалите строку Cells(TotalLoop - 1, 10) = Fund и ваш цикл будет функционировать по желанию

0

Sub Format()

Dim sh As Worksheet 
Dim Fund As Long 
Dim TotalLoop As Long 
Set sh = ThisWorkbook.Sheets("Sheet1") 
RowCount = sh.Range("A1", sh.Range("A1").End(xlDown)).Rows.Count 


For TotalLoop = RowCount To 2 Step -1 
Fund = Cells(TotalLoop, 10) 
If Fund = 0 Then 
Rows(TotalLoop).Delete 
End If 
Next TotalLoop 

End Sub

+0

Спасибо, ребята. Удаление этой линии помогло –

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