Sub TEST1()
'検索結果がない場合エラーとなる
Range("D2") = WorksheetFunction.VLookup("GGGG", Range("A2:B15"), 2, False)
End Sub
次の表を使います。
表にない「"GGGG"」で検索
では、VBAコードを実行してみます。
エラーになる
という感じで、エラーになっちゃいます。
「On Error Resume Next」でエラーを回避する
「On Error Resume Next」を使うとエラーを無視することができます。
エラーが発生するVBAコードの前に記載します。
Sub TEST2()
'エラーを無視する
On Error Resume Next
'エラーを出す
Range("D2") = WorksheetFunction.VLookup("GGGG", Range("A2:B15"), 2, False)
End Sub
表にない「"GGGG"」で検索してみます。
表にない「"GGGG"」で検索
では、VBAコードを実行してみます。
「On Error Resume Next」でエラーを回避
「On Error Resume Next」でエラーを回避できました。
エラーは発生していません。
「Err.Number > 0」でエラー時の文字を設定
「Err.Number>0」を使うと、エラー時の文字を設定することができます。
エラーを回避するだけではあまり使えないので、エラーが発生している場合の処理をしたいですよね。
エラーが発生した場合は、「Err.Number」が「0より大きく」なります。
これを利用します。
Sub TEST3()
'エラーを無視する
On Error Resume Next
'エラーを出す
Range("D2") = WorksheetFunction.VLookup("GGGG", Range("A2:B15"), 2, False)
'エラーがある場合
If Err.Number > 0 Then
Range("D2") = "エラー"
End If
End Sub
Sub TEST4()
'エラーを無視する
On Error Resume Next
'エラーを出す
Range("D2") = WorksheetFunction.VLookup("GGGG", Range("A2:B15"), 2, False)
Cells(0, 0) = 1 '←本当はエラー
End Sub
Sub TEST5()
'エラーを無視する
On Error Resume Next
'エラーを出す
Range("D2") = WorksheetFunction.VLookup("GGGG", Range("A2:B15"), 2, False)
'これ以降エラーを表示する
On Error GoTo 0
Cells(0, 0) = 1 '←エラーを出してくれる
End Sub
Sub TEST6()
'エラーを無視する
On Error Resume Next
'エラーを出す
Range("D2") = WorksheetFunction.VLookup("GGGG", Range("A2:B15"), 2, False)
'エラーがある場合
If Err.Number > 0 Then
Range("D2") = "エラー"
End If
'これ以降エラーを表示する
On Error GoTo 0
End Sub
エラー対策をして表にない「"GGGG"」で検索してみます。
では、VBAコードを実行してみます。
エラー対策をして、任意の文字を入力できました。
エラー対策をして「"G"」で検索
もちろん通常の検索もできます。
Sub TEST7()
'エラーを無視する
On Error Resume Next
'エラーを出す
Range("D2") = WorksheetFunction.VLookup("G", Range("A2:B15"), 2, False)
'エラーがある場合
If Err.Number > 0 Then
Range("D2") = "エラー"
End If
'これ以降エラーを表示する
On Error GoTo 0
End Sub
エラー対策をして「"G"」で検索してみます。
では、VBAコードを実行してみます。
検索値があるので価格を取得できました。
埋め込み数式でVLookupを使う場合のエラー回避
「埋め込み数式」でVLookupがエラーになる場合の対策をやってみます。
使うものは「IFERROR関数」です。
埋め込み数式の場合は簡単ですね。
数式の結果がエラーとなる
埋め込み数式で「VLookup関数」を使って検索値がない場合、「エラー値」となります。
Sub TEST8()
'検索結果がない場合
Range("D2") = "=VLOOKUP(""GGGG"",A2:B10,2,FALSE)"
Range("D2").Value = Range("D2").Value '値に変換
End Sub
表にない「"GGGG"」で検索してみます。
表にない「"GGGG"」で検索
では、VBAコードを実行してみます。
入力がエラーとなる
入力がエラーとなりました。
IFERROR関数を使う
「数式埋め込み」のVLookupのエラー回避は、「IFERROR関数」を使います。
「IFERROR関数」を使う
「IFERROR関数」を使うとこんな感じになります。
Sub TEST9()
'「IFERROR」を使う
Range("D2") = "=IFERROR(VLOOKUP(""GGGG"",A2:B10,2,FALSE),""エラー"")"
Range("D2").Value = Range("D2").Value '値に変換
End Sub
表にない「"GGGG"」で検索してみます。
では、VBAコードを実行してみます。
エラー回避をして、任意の文字を表示できました。
通常の検索もできる
もちろん通常の検索もできます。
「"G"」で検索してみます。
Sub TEST10()
'「IFERROR」を使う
Range("D2") = "=IFERROR(VLOOKUP(""G"",A2:B10,2,FALSE),""エラー"")"
Range("D2").Value = Range("D2").Value '値に変換
End Sub