dポイントプレゼントキャンペーン実施中!

VBA初心者です。
エクセルのマクロを組んでいるですが、サブルーチンの引数を配列にしたいのですが、どうすればよろしいでしょうか?
下記に例を示します。
呼び出し(Call)とサブルーチンの配列変数の記載方法がわかりません。
特に気になるのは、サブルーチンの配列に配列数(下記であれば10)を記入する必要があるのか?
必要な場合、元の配列数を変更した場合、どうすればミスなく、漏れなく修正できるか、良い方法はありまんせんか?

(例)
(呼び出し側)
Dim AA(10) As Integer
Call Test(AA)     ← 引数はAAでよい?それともAA()

Sub Test(ByRef AA As Integer) ← AA or AA() or AA(10) ?
AA(3) = AA(2) + AA(1)


以上、お手数をおかけしますが、よろしくお願いします。

A 回答 (2件)

こんなのGoogleで「vba 配列 引数」で照会すれば、実例つき解説が沢山在る。


最初のものを少し修正して
Sub PassArg()
Dim i As Integer
Dim MyArray(3) As String
MyArray(0) = "東京"
MyArray(1) = "大阪"
MyArray(2) = "福岡"
Call RecArg(MyArray)
End Sub
Sub RecArg(MyArg() As String)
Dim j As Integer
For j = 0 To UBound(MyArg) - 1
MsgBox MyArg(j)
Next j
End Sub
で判りますか。
これなどでわからない場合、ピントハズレの場合は、ここに質問すると良い。
    • good
    • 0

そこまで書いて、なぜ試してみないのでしょうか?



受け取り側を修正するだけでエラーになりませんよ。
Sub Test(ByRef AA() As Integer)

-------------------------------------------
Sub main()
Dim AA(10) As Integer
AA(2) = 10
AA(1) = 5
Call Test(AA)
MsgBox AA(3)
End Sub

Sub Test(ByRef AA() As Integer) ' ← AA()
AA(3) = AA(2) + AA(1)
End Sub
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!