の代わりにWorksheetFunction.Vlookup、 を使用できますApplication.Vlookup。これと等しい値を設定すると、Variant一致するものが見つからない場合にエラー 2042 が返されます。次に、バリアントをテストできますcellNum。この場合は、次のようにしIsErrorます。
Sub test()
Dim ws As Worksheet: Set ws = Sheets("2012")
Dim rngLook As Range: Set rngLook = ws.Range("A:M")
Dim currName As String
Dim cellNum As Variant
'within a loop
currName = "Example"
cellNum = Application.VLookup(currName, rngLook, 13, False)
If IsError(cellNum) Then
MsgBox "no match"
Else
MsgBox cellNum
End If
End Sub
および関数のApplicationバージョンを使用すると、エラーを発生させずにエラーをテストできます。バージョンを使用する場合、コードをエラー ハンドラーに再ルーティングする、次のステートメントに戻って評価するなどの複雑なエラー処理が必要になります。関数を使用すると、その混乱を回避できます。VLOOKUPMATCHWorksheetFunctionApplication
上記は、IIF関数を使用してさらに単純化できます。この方法は、常に適切であるとは限りません (たとえば、 に基づいてさらに多くの手順または別の手順を実行する必要If/Thenがある場合)。ただし、MsgBox に表示するプロンプトを単純に決定しようとしている場合は、次のように機能するはずです。
cellNum = Application.VLookup(currName, rngLook, 13, False)
MsgBox IIF(IsError(cellNum),"no match", cellNum)
ステートメントの代わりに これらのメソッドを検討してください。どちらも読みやすく、保守も簡単です。一連のandステートメントOn Error ...に従うことほど混乱を招くものはほとんどありません。GoToResume