WorksheetFunction.VLookup関数は、該当データが見つからなかった場合は、「実行時エラー ‘1004’ WorksheetFunctionクラスのVLookupプロパティを取得できません。」となりプログラムが止まってしまいます。今回は、この問題を回避する方法を紹介します。

解決策としては、On Error Resume Next文とOn Error GoTo文を組み合わせることとなります。今回は、以下のシートを準備して、VLookup関数で該当する文字列を確認します。

サンプルプログラム
Sub sample()
Dim str As String
On Error Resume Next
str = WorksheetFunction.VLookup(Range("B1"), Range("D1:E9"), 2, False)
On Error GoTo 0
Range("B2") = str
End Sub
出力結果
今回はB1セルに存在するキーを入力しているため、B2セルにアルジェリアが期待通りに出力されています。B1セルに存在しないキーを入力して、マクロを再実行してみてください。エラーとはならずプログラムは正常終了します。(B2セルは空白になります)

