【VBA】Match関数でエラーが出る時の対処法

2023年2月28日

【VBA】Match関数でエラーが出る時の対処法

VBAからMatch関数を使用すると画像のエラーが出ることがあります。

これはマッチするデータがないときに起こります。Excelシート上で使う時はN/Aとなるのですが、VBAだとエラーになってしまいます。

今回はこのエラーが出る時の対処法を紹介します。

VBAが難しいと感じたら
プロにお任せして代わりに作ってもらってはいかがでしょう?
VBAの作成依頼はこちらから

Match関数でエラーが出る具体例

Excelシート
Sub MatchError()
    
    Dim num As Long
    
    'Kがないのでエラーになる
    num = Application.WorksheetFunction.Match("K", Range("A1:A8"), 0)
    
    Debug.Print num
End Sub

例えば上のようにExcelにデータがあるときに、このプログラムを実行するとエラーが起こります。

これはMatch関数が"K"を探しているのに、シート上にKがないためです。

Match関数でエラーが出る時の対処法

Sub MatchNoneError()
    
    On Error Resume Next 'エラーを無視
    Dim num As Long
    
    'エラーになるが無視される
    num = Application.WorksheetFunction.Match("K", Range("A1:A8"), 0)
    
    If Err.Number > 0 Then num = 0 'エラーがある場合
    
    On Error GoTo 0 'エラーを無視の終了
    Debug.Print num
End Sub

エラーを回避するためには、On Error Resume Nextで一旦エラーを無視します。

    If Err.Number > 0 Then num = 0 'エラーがある場合

そしてこの部分でエラーとなっていた場合の処理をします。

Err.Numberはエラー番号を返すプロパティで正常ならば0のため、0より大きい=エラーがあったというわけです。

On Error GoTo 0 'エラーを無視の終了

最後にOn Error GoTo 0を書いて再度エラーが生じるように戻します。

これを入れておかないと、この後もエラーを無視したままになります。Match関数以外のエラーはきちんと発生するようにしてバグ防止に努めましょう。

Match関数は直接エラーを回避する方法がないため、このように一度エラーを無視して対処しましょう。

VBAが難しいと感じたら
プロにお任せして代わりに作ってもらってはいかがでしょう?
VBAの作成依頼はこちらから

《VBA中級者向けの本》
VBA上級者を目指したい人にはパーフェクトExcel VBA一択です。

created by Rinker
技術評論社
¥3,608 (2023/03/24 15:53:51時点 Amazon調べ-詳細)

他の「VBA」の記事はこちらからどうぞ

VBA

Posted by やろまい