4

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 ステートメントを実行しようとすると、ゼロ除算エラーが発生したことを通知します。それは私をデバッグに投げ込みます。しかし、これは私がコード ブロック 1 をトリガーしたいタイプのものです!

4

2 に答える 2

13

これを処理する通常の方法は次のようになります

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
于 2013-09-02T06:37:57.337 に答える
5

を使用してすべてのワークシート関数を呼び出すことができますApplication.WorksheetFunction.IsError(args)

セルで直接計算を実行して、その値をクエリすることもできます。たとえば、非常にハッキーです:

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
于 2013-09-01T19:54:50.770 に答える