VLookupで一致しなかった時のVBAでの処理
On Error ~を使わないで、
VLookup()で一致しなかった時の処理をさせたいのですが
どのように記述すればよいでしょうか。
例えば、以下のようなコードの場合、
一致したデータがない時にyに-1を代入するには
以下のコードをどのように記述すればよいのでしょうか。
---------------------
Dim x As Integer
Dim y As String
x = 7
y = Application.WorksheetFunction.VLookup(x, Worksheets("Sheet1").Range("A1:B100"), 2, False)
---------------------
以下はいずれもエラーになりますが、以下のような感じで処理がしたいです。
---------------------
If IsError(Application.WorksheetFunction.VLookup(x, Worksheets("Sheet1").Range("A1:B100"), 2, False)) Then
y = -1
Else
y = Application.WorksheetFunction.VLookup(x, Worksheets("Sheet1").Range("A1:B100"), 2, False)
End If
---------------------
If Application.WorksheetFunction.IsNA(Application.WorksheetFunction.VLookup(x, Worksheets("Sheet1").Range("A1:B100"), 2, False)) Then
y = -1
Else
y = Application.WorksheetFunction.VLookup(x, Worksheets("Sheet1").Range("A1:B100"), 2, False)
End If
---------------------
y = Application.WorksheetFunction.IfError(Application.WorksheetFunction.VLookup(x, Worksheets("Sheet1").Range("A1:B100"), 2, False), -1)
---------------------
なお、以下のように本来エラーではない処理で
On Error Resume Nextを使うのは、
本当のエラーの処理と混同するため不可
---------------------
On Error Resume Next
y = Application.WorksheetFunction.VLookup(x, Worksheets("Sheet1").Range("A1:B100"), 2, False)
If Err <> 0 Then y = -1
On Error GoTo 0
---------------------
お礼
ありがとうございました。 そのような方法があるのですね。