VBでは、配列、コレクション、プロシージャも同じ記号の()を使う。ややこしいですね。他の言語では配列は[ ]を使う。
VBAの()の使い方3つ。
- 配列変数(要素番号)
- コレクション(名前またはインデックス番号) Range
- プロシージャ名(引数1,引数2)
ここでは、とりあえず2番目のRangeを説明します。
まず、XXXX(??, ??,??)とカッコを付けると戻り値がある。つまり、変数名=XXXX(??, ??,??)やDebug.Print XXXX(??, ??,??)( Debug.Print の出力が値)ができる。配列も関数も同じような書き方をする。イミディエイトで?とする場合は、戻り値を期待しているので()がいる。「変数=」の右辺に書く場合も変数に代入したいのだから()がいる。
ExcelのオブジェクトであるRange(“A1”)()のカッコは、配列ように見えるがItemの省略。Item関数は感覚的には配列のように考えればいい。以下は、イミディエイトウィンドウで、?はPrintのこと。?から始まる行は入力。次の行は出力結果。
set kk=range("a1:b2")
?vba.TypeName(kk)
Range
?kk(1)
A1
?kk(2)
B1
?kk(3)
A2
?vba.TypeName(range("a1:b2"))
Range
?range("a1:b2").Item(1)=range("a1:b2")(1)
True
?range("a2:b3")(1)
A2
配列でもオブジェクトでも関数でも()のカッコは、戻り値を受け取るためと理解すればいい。最もよく使うのがコレクションの中の一つを取り出すために使う()。
(Visited 178 times, 1 visits today)