Вы также можете установить это как диапазон:
Sub t()
Dim cellsWithErroringFormulas As Range
On Error Resume Next
Set cellsWithErroringFormulas = Range("Q:Q").SpecialCells(xlCellTypeFormulas, 16)
On Error GoTo 0
If cellsWithErroringFormulas Is Nothing Then
' Do whatever
MsgBox ("No formulas result in an error!")
Exit Sub
ElseIf cellsWithErroringFormulas.Rows.Count > 0 Then
cellsWithErroringFormulas.SpecialCells(xlCellTypeFormulas, 16).EntireRow.Delete
' Now, if you call `cellsWithErroringFormulas` again, it will error since you removed all those references.
' So to be explicit, let's clear that variable.
Set cellsWithErroringFormulas = Nothing
End If
End Sub
Я подправил имя переменной только потому, что технически вы ищете не строки с формулами, а ячейки с формулами, которые приводят к ошибке. Здесь немного неуклюже, поэтому переименовывайте по желанию. Просто хотел указать на это.
Кроме того, поскольку я не знаю, что вы планируете делать дальше, я добавил Set cellsWithErroringFormulas = Nothing
, поскольку мы не можем использовать эту ссылку после удаления ошибочных строк. Возможно, вам это и не нужно, но я просто хотел включить это, чтобы указать на это.