Проблема, с которой вы столкнулись, заключается в том, что если в столбце AB нет нулей, ваш существующий код фильтрует только строку заголовка, а затем удаляет.Я добавил некоторый код, чтобы пройтись по столбцу AB и проверить, существуют ли какие-либо 0 перед действием вашего существующего кода.
Я редактирую этот ответ, он больше не использует ваши методы автофильтра.Приведенный ниже код должен делать то, что вы пытаетесь достичь, и он избавляется от потенциальных проблем с удалением строк внутри цикла, как было выделено в комментариях.
Я снова отредактировал, чтобы исправить проблему, которую вы описали с помощьюзначения кодирования, включающие 0 (например, 10.05).
Sub Delete_Zero_Rows()
Dim Firstrow As Long
Dim Lastrow As Long
Dim Lrow As Long
With Worksheets("Sheet1")
'Set the first and last row to loop through
Firstrow = .UsedRange.Cells(1).Row
Lastrow = .UsedRange.Rows(.UsedRange.Rows.Count).Row
'Loops from Lastrow to Firstrow (bottom to top)
For Lrow = Lastrow To Firstrow Step -1
'Checks the values in column AB
With .Cells(Lrow, "AB")
If Not IsError(.Value) Then
If .Value = "0" Then .EntireRow.Delete
End If
End With
Next Lrow
End With
End Sub
Не забудьте заменить «Лист1» в моем коде на то, что называется вашим рабочим листом.
Это должно исправить вашу проблему!