プロシージャの引数が配列

Dim a(3) As Variant

Call func1(a)

Sub func1(arg() As Variant)
'引数の下限:LBound(arg)/上限:UBound(arg)
Sub main()
Dim a(3) As Variant
Dim i
For i = 0 To 3
a(i) = i * 100
Next

Call func1(a)
For i = 0 To 3
MsgBox a(i)
Next
End Sub

Sub func1(arg() As Variant)
Dim i
For i = LBound(arg) To UBound(arg)
arg(i) = arg(i) + 3
Next
End Sub
最後のMsgBoxによる表示部分で表示されるのはなにか。
3,103,203,303 と順に4つ分表示される。
このように配列の場合も引数は参照渡しなので渡した関数側で変更ができてしまう。
というか、配列は値渡しができない。(ByVal宣言をいれようとすると怒られる)

配列を渡す際にはその範囲を知る必要がある。
LBoundは配列の下限、UBoundは配列の上限を返す組み込み関数である。

2次元配列の場合にも同様に記述できる。
LBound/UBoundは第二引数を使うことができて
LBound(arg,1)・・・一つ目の引数の範囲
LBound(arg,2)・・・二つ目の引数の範囲
ということになる。
comments (2)

コメント

margretquach.wordpress.com | 2017/07/31 04:21 PM
This article will help the internet viewers for building
up new blog or even a blog from start to end.
How much does it cost to lengthen your legs? | 2017/07/29 05:39 AM
Great post. I will be dealing with a few of these
issues as well..

Comment Form