質問: VBAの配列宣言について
回答: 質問者さんの ParamArray の動作認識が誤っている感じです。 ParamArray の使い道は引数の数が可変になるときに使用するものです。 配列の添え字が可変という意味ではありません。 ここでの【可変】とは、たとえば Function MyFunc(a,b,Optional c) これも引数の数が可変しますが、引数が最低でも2個で最大で3つまで指定できます。 ParamArray はそれにも当てはまらず、その引数の数が可変になるということです。 Function MyFunc(ParamArray 引数()) とした場合 Call MyFunc(1,"A",Date()) とか、たくさん引数があるようなら Call MyFunc(1,"A",Date(),・・・・・・,"Z") とか、なんなら引数なしでも Call MyFunc() とかでも呼び出せます。 そんな動作をさせるものが ParamArray の機能です。 ・・・ということで・・・ Function Mysum(ParamArray 引数()) ↑これに対して ↓こうしたら Dim 配列, 配列2 配列 = Array(1,2,3) 配列2 = Mysum(配列) ↓こんな感じに認識されます。 Mysum(ParamArray 引数(配列())) ↓こう認識させないと意図通りにはなりません。 Mysum(ParamArray 引数(配列(0),配列(1),配列(2))) というか、この質問内容では ParamArray が邪魔です。 Function Mysum(引数) と定義するだけでOKです。