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番目に見つかった
見つからない