このサイトの記事内では「アフィリエイト広告」などの広告を掲載している場合があります。
消費者庁が問題としている「誇大な宣伝や表現」とならないよう配慮しコンテンツを制作しておりますのでご安心ください。
問題のある表現が見つかりましたらお問い合わせよりご一報いただけますと幸いです。

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

2023年2月28日

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

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

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

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

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

Posted by やろまい