Excel スプレッドシートからの大きな範囲を、VBA で記述されたユーザー定義関数 (UDF) のパラメーター ExcelRange に渡します。
- パラメータ ExcelRange As Range を宣言し、それを Variant に変換できます:
Dim VariantArray As Variant
VariantArray = ExcelRange.Value2
または
- UDF のパラメーター ExcelRange を Variant として直接宣言できます。
どちらの場合でも、ループ内で、VariantArray または ExcelRange の各要素を Double 変数に変換します。
1. と 2. のどちらの方が時間効率が良いでしょうか?
答え1
どちらの場合でも、ループ内で VariantArray の各要素を Double 変数に変換します。1
. と 2. のどちらがより効率的でしょうか?
いずれにせよ、範囲を Variant に変換すると、パフォーマンスに大きな違いは見られません。
変換してから渡すか、渡してから変換するかは、同じ労力で済みます。
違いは UDF の使用方法にあります。
- 範囲を使って何かする必要がある場合(例えば、アドレスを取得するなど)、明らかにRange引数を取る必要があります。
- ユーザーが範囲ではなく配列を渡すことが予想される場合は、引数を Variant (
=SUM({1,2,3})
Excel の有効な数式など) として宣言することをお勧めします。