【VBA】VLookupでエラーが出る時の対処法
VBAからVLookup関数を使用すると画像のエラーが出ることがあります。
これはVLookupにマッチするデータがないときに起こります。Excelシート上で使う時はN/Aとなるのですが、VBAだとエラーになってしまいます。
今回はこのエラーが出る時の対処法を紹介します。
VLookupでエラーが出る具体例
Sub VLookupError()
Dim price As String
'Kがないのでエラーになる
price = WorksheetFunction.VLookup("K", Range("A2:B8"), 2, False)
Debug.Print price
End Sub
例えば上のようにExcelにデータがあるときに、このプログラムを実行するとエラーが起こります。
これはVLookupで"K"を探しているのに、シート上にKがないためです。
VLookupでエラーが出る時の対処法
Sub VLookupNoneError()
On Error Resume Next 'エラーを無視
Dim price As String
price = WorksheetFunction.VLookup("K", Range("A2:B8"), 2, False) 'エラーを出す
If Err.Number > 0 Then price = "エラー" 'エラーがある場合
On Error GoTo 0 'エラーを無視の終了
Debug.Print price
End Sub
エラーを回避するためには、On Error Resume Nextで一旦エラーを無視します。
If Err.Number > 0 Then price = "エラー" 'エラーがある場合
そしてこの部分でエラーとなっていた場合の処理をします。
Err.Numberはエラー番号を返すプロパティで正常ならば0のため、0より大きい=エラーがあったというわけです。
On Error GoTo 0 'エラーを無視の終了
最後にOn Error GoTo 0を書いて再度エラーが生じるように戻します。
これを入れておかないと、この後もエラーを無視したままになります。VLookup関数以外のエラーはきちんと発生するようにしてバグ防止に努めましょう。
VLookup関数は直接エラーを回避する方法がないため、このように一度エラーを無視して対処しましょう。