【EXCEL VBA】Match関数利用時のエラーを消したい

WorksheetFunction.Match関数は、該当データが見つからなかった場合は、「実行時エラー ‘1004’ WorksheetFunctionクラスのMatchプロパティを取得できません。」となりプログラムが止まってしまいます。今回は、この問題を回避する方法を紹介します。

On Error Resume NextとOn Error GoToで解決する

解決策としては、On Error Resume Next文とOn Error GoTo文を組み合わせることとなります。今回は、以下のシートを準備して、Match関数で何番目に見つかったかを確認します。

サンプルプログラム(コピペでOK)

Sub sample()
    Dim n As Long
    
    n = 0
    On Error Resume Next
    n = WorksheetFunction.Match("アルゼンチン", Range("A1:A100"), 0)
    On Error GoTo 0
  
    If n = 0 Then
        Debug.Print "見つからない"
    Else
        Debug.Print n & "番目に見つかった"
    End If

    n = 0
    On Error Resume Next
    n = WorksheetFunction.Match("ジャパン", Range("A1:A100"), 0)
    On Error GoTo 0
  
    If n = 0 Then
        Debug.Print "見つからない"
    Else
        Debug.Print n & "番目に見つかった"
    End If

End Sub

出力結果

6番目に見つかった
見つからない