|
▼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 を書かないことが多いです。
(今回も、単にその習慣で略してました)
|
|