まりふのひと

Excel VBAでVLookupを使う

2010/05/01 の excel memo に気になる記事が載っていた。3年半前の記事‥‥ だ。(自分は3年以上遅れているのだ...)

VBAでVLOOKUPを使う

 ポイントは"Application.VLookup"の部分で、これは"Application.WorkSheetFunction.VLookup"からWorkSheetFunctionオブジェクトを省略した記述です。ただし、省略せずにフルに記述すると、検索結果が見つからない場合、ステートメントそのものがエラーとなり、『実行時エラー '1004' :WorkSheetFunction クラスの VLookup プロパティを取得できません。』が発生して処理が停止してしまいます。
従って、ここではエラーを回避するために、意図的にWorkSheetFunctionオブジェクトを省略しています。

要するに、下記の 1. と 2. は違いますよ〜 と言っている。

  1. Application.WorkSheetFunction.VLookup(.Cells(5, 5), .Range("A2:C8"), 3, False)
  2. Application.VLookup(.Cells(5, 5), .Range("A2:C8"), 3, False)

エラーを回避するには、

  • 1. では On Error Goto での対応が必要。
  • 2. では IsError 関数での対応が必要。

となると、2. の省略した方法の方がいいなぁ〜