| 
    
     |  | ▼INA さん: 
 >WorksheetFunction が無くても使えるのですね!
 > これは、WorksheetFunction が、省略可能ということなのでしょうか?
 
 例えば、A1:B3 のセルに以下のようなデータがあるとして、VlookupをVBAから使用します。
 A  B
 1 A あ
 2 B い
 3 C う
 
 検索する値をD1セルに入力して、次の2つのSubの動作を確認してみてください。
 Sub samp1()
 Dim ret     As Variant
 ret = Application.VLookup(Range("D1").Value, Range("A1:B3"), 2, 0)
 MsgBox TypeName(ret)
 End Sub
 
 Sub samp2()
 Dim ret     As Variant
 ret = Application.WorksheetFunction.VLookup(Range("D1").Value, Range("A1:B3"), 2, 0)
 MsgBox TypeName(ret)
 End Sub
 
 表内に合致するデータがないときに動作に差があります。
 要するに、WorksheetFunction をわざと省略することにより、エラーがハンドリングできる
 ということのようです。
 VLookupだけでなく、他にもいくつか動作の違う関数があるそうです。
 
 また、WorksheetFunction を書かないほうが、実行速度が速い、という噂も聞いたことがあります。
 (ガセ、または、条件(バージョンなど)によるのかもしれません)
 
 以上、いささか怪しいところもありますが、私が知っている限り、
 VBAからワークシート関数を利用する際に、WorksheetFunction の有無で、
 上記のような違いがあるようです。
 
 #因みに、私は多くの場合、WorksheetFunction を書かないことが多いです。
 (今回も、単にその習慣で略してました)
 
 |  |