Я пытаюсь убедиться, что диапазон имеет видимые строки, прежде чем я буду воздействовать на эти видимые строки (удалите их), потому что если я попытаюсь действовать в отфильтрованном диапазоне, когда там нет видимых строк, я получу ошибка.Выполняет ли цикл Do-While for для каждого следующего цикла?
Dim lastrow As Integer
Dim ws as Worksheet
For Each ws In ActiveWorkbook.Worksheets
ws.Activate
ws.Range("$A$8").Select
Selection.End(xlDown).Select
lastrow = ActiveCell.Row
'DELETE PART CLASSES ROWS
ActiveSheet.Range("$O$7:$O$" & lastrow & "").AutoFilter Field:=1, Criteria1:= _
Array("CONS", "MISC", "PFG", "PRT", "TOTE", "="), _
Operator:=xlFilterValues
Range("$A$8").Select
Do
If ActiveCell.SpecialCells(xlCellTypeVisible) Then
ActiveSheet.Range("$O$8:$O$" & lastrow).SpecialCells(xlCellTypeVisible).EntireRow.DELETE
Exit Do
End If
While ActiveCell.Row < lastrow
Range("$O$8").AutoFilter Field:=1
Next
Блок кода работал нормально, пока я не добавил вложенные петли Do-If-While. Теперь я получаю ошибку компиляции: Следующая без
Что я делаю неправильно?
спасибо.
Разве ваш 'Do While' не нужен' Loop'? 'Do .. IF .. End if .. Loop While ...' – Raystafarian
^this. 'Do Loop While ' –
FreeMan
Простая типографская/синтаксическая ошибка. VTC – Chrismas007