2010/05/01 の excel memo に気になる記事が載っていた。3年半前の記事‥‥ だ。(自分は3年以上遅れているのだ...)
VBAでVLOOKUPを使う
ポイントは"Application.VLookup"の部分で、これは"Application.WorkSheetFunction.VLookup"からWorkSheetFunctionオブジェクトを省略した記述です。ただし、省略せずにフルに記述すると、検索結果が見つからない場合、ステートメントそのものがエラーとなり、『実行時エラー '1004' :WorkSheetFunction クラスの VLookup プロパティを取得できません。』が発生して処理が停止してしまいます。
従って、ここではエラーを回避するために、意図的にWorkSheetFunctionオブジェクトを省略しています。
要するに、下記の 1. と 2. は違いますよ〜 と言っている。
- Application.WorkSheetFunction.VLookup(.Cells(5, 5), .Range("A2:C8"), 3, False)
- Application.VLookup(.Cells(5, 5), .Range("A2:C8"), 3, False)
エラーを回避するには、
- 1. では On Error Goto での対応が必要。
- 2. では IsError 関数での対応が必要。
となると、2. の省略した方法の方がいいなぁ〜