ошибка времени выполнения 1004 при подсчете ячейки с формулой

#excel #vba #excel-2016

#excel #vba #excel-2016

Вопрос:

Я написал код VBA для своего файла Excel. В коде VBA я должен удалить ячейки с формулой. Мой код работает нормально, если он обнаружил хотя бы одну ячейку с формулой, но если такой ячейки нет, тогда отображается ошибка — ошибка времени выполнения ‘1004’.

мой код

 Dim n As Integer
n = Sheets("Pay_Slip").Range("B11:AO510").SpecialCells(xlCellTypeFormulas, 23).Count

If n > 0 Then
    Sheets("Pay_Slip").Range("B11:AO510").Select
    Selection.SpecialCells(xlCellTypeFormulas, 23).Select
    Selection.ClearContents
End If
 

Пожалуйста, помогите мне найти ошибку.

Ответ №1:

Вы можете перехватить условие отсутствия ячеек формулы:

 Sub qwerty()
    Dim n As Long
    On Error Resume Next
        n = Sheets("Pay_Slip").Range("B11:AO510").SpecialCells(xlCellTypeFormulas, 23).Count
        If Err.Number > 0 Then
            MsgBox "no formula cells"
            Exit Sub
        End If
    On Error GoTo 0
    
    If n > 0 Then
        Sheets("Pay_Slip").Range("B11:AO510").Select
        Selection.SpecialCells(xlCellTypeFormulas, 23).Select
        Selection.ClearContents
    End If
End Sub
 

Ответ №2:

Для устранения возможности отсутствия формулы и добавления других возможностей для улучшения

 Sub Demo()
    Dim rFormula as Range

    On Error Resume Next
        Set rFormula = Workheets("Pay_Slip").Range("B11:AO510").SpecialCells(xlCellTypeFormulas, 23)
    On Error GoTo 0
    
    If Not rFormula Is Nothing Then
        rFormula.ClearContents
    End If
End Sub