是否可以在VBA中使用具有与Iferror(value,value_if_error)或Iserror(value)类似功能的东西?
我试着写:
If IsError(Cells(i, c) / curr) Then
'CODE BLOCK 1
else
'CODE BLOCK 2
end if
但VBA告诉我,当我尝试运行if语句时,我有零错误。它让我进入调试。但这只是我想触发CODE BLOCK 1的类型!
答案 0 :(得分:8)
处理此问题的通常方法是
i = 0
On Error Resume Next
n = 1 / i
If Err.Number <> 0 Then
'Handle error - code block 1
Err.Clear
On Error GoTo 0
Else
On Error GoTo 0
' No error - code block 2
End If
答案 1 :(得分:4)
您可以使用Application.WorksheetFunction.IsError(args)
您也可以尝试直接在单元格中进行计算并查询其值。例如,非常hacky:
Sub asdf()
Dim ws As New Worksheet
Set ws = ActiveSheet
Dim i As Double
i = 0
ws.Range("A2").Formula = "=iserror(A1 / " & i & ")"
If ws.Range("A2").Value Then
Debug.Print "Error caught"
Else
Debug.Print "No error"
End If
End Subu