配列(多次元配列・配列の次元の変更)
2015/04/02
多次元配列
<静的配列(固定長配列)>
Dim myArray ( [ lower To ] upper [, [ lower To ] upper … ] ) [ As Type ]
<動的配列>
Dim myArray () [ As Type ]
ReDim [ Preserve ] myArray ( [ lower To ] upper [, [ lower To ] upper … ] ) [ As Type ]
【項目の説明】
- myArray ・・・ 配列の変数名
- lower ・・・ 配列の添字最小値(先頭のインデックス:省略可)
- upper ・・・ 配列の添字最大値(末尾のインデックス
- Type ・・・ 変数のデータ型 を指定(省略時は Variant(バリアント型)になります)
「 lower To 」の部分は省略可能です(省略時の配列の添字最低値は「0」、Option Base 1 を指定している場合は「1」となります)。
upper, lower To upper, upper …
のように指定できます。
【Dim ステートメントについて】
配列の添字の部分( “( )” 内の部分 )の構文は、次元に応じて以下のように指定します。
lower To upper, lower To upper, lower To upper …
最大60次元まで指定可能です
Dim ステートメントで、要素数を指定せずに宣言した場合その配列は実行時に要素数を変更することができます(動的配列)。しかしそのままでは使用できないので、ReDim ステートメントを使って、要素数・次元数を指定します。
【ReDim ステートメントについて】
ReDim ステートメントを使用すると動的配列の要素数・次元数を変更することができます。
Preserve キーワードを使用すると、その配列にすでに格納されている値を失わずに要素数を変更することができます。ただしこれを使用する時は、配列の次元を変更することはできません。
多次元配列の使用例
VBAソース(その1)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
Option Base 1 Sub sample_array02() '配列 valArray(Variant型)、と変数 r(Variant型)の宣言 Dim valArray(), r 'valArray の次元・要素数を設定 ReDim valArray(5, 2) valArray(1, 1) = 1 valArray(2, 1) = 2 valArray(3, 1) = 3 valArray(4, 1) = 4 valArray(5, 1) = 5 valArray(1, 2) = "東 京" valArray(2, 2) = "横 浜" valArray(3, 2) = "大 阪" valArray(4, 2) = "名古屋" valArray(5, 2) = "札 幌" '配列 valArray を上記で代入した値を保持した状態で、要素数を変更 ReDim Preserve valArray(5, 3) valArray(1, 3) = "895" valArray(2, 3) = "369" valArray(3, 3) = "267" valArray(4, 3) = "226" valArray(5, 3) = "191" For r = 1 To 5 Debug.Print valArray(r, 1) & " " & valArray(r, 2) & " " & valArray(r, 3) Next r End Sub |
実行結果
VBAソース(その2)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
Option Base 1 Sub sample_array03() 'オブジェクト型の配列 sht の宣言 Dim sht() As Object Dim v Dim i As Long Dim shtNames As String i = 0 For Each v In Worksheets '値を保持したまま要素数を変更 ReDim Preserve sht(i + 1) Set sht(i + 1) = v i = i + 1 Next v For Each v In sht shtNames = shtNames & v.Name & Chr(13) Next v MsgBox shtNames 'メモリの解放 Erase sht End Sub |
実行結果
VBAソース(その3)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Option Base 1 Sub sample_array04() '整数型(Integer)の配列の宣言 Dim newArray() As Integer '2次元配列に設定 ReDim newArray(1, 1) newArray(1, 1) = 100 '2次元配列 newArray を3次元配列にして、要素数も変更 ReDim newArray(2, 2, 2) End Sub |
関連記事
-
-
色の設定(ThemeColor プロパティ・TintAndShade プロパティ)
ThemeColor プロパティ・TintAndShade プロパティ テーマカ …
-
-
ユーザー定義関数:セルを取得する(ThisCell プロパティ)
入力されたセルを取得する ワークシート上で使用する Function プロシージ …
-
-
文字列:文字列の指定した位置から指定文字数取得(Mid 関数,MidB 関数)
Mid 関数・MidB 関数 の使い方 【書式】 result_mid = Mi …
-
-
メッセージボックスを表示(MsgBox関数)
MsgBox関数 【書式】 result = MsgBox ( Prompt [ …
-
-
文字列:文字列変数内の一部を置き換える(Mid・MidB ステートメント)
Mid・MidB ステートメントの使い方 【書式】 { Mid | MidB } …
-
-
式の値に応じて多分岐を行う(Switch 関数)
Switch 関数 の使い方 Switch 関数は、「式・値」を対にして指定して …
-
-
配列の添字の最小値を「1」に設定する
Option Base ステートメントを使用する 【書式】 Option Bas …
-
-
Array 関数(バリアント型の配列を作成)
Array 関数の使い方 【書式】 myArray = Array ( elem …
-
-
VBA の演算子(文字連結演算子:& 演算子 + 演算子)
文字連結演算子 文字連結演算子は、文字列の連結を行うときに使用する演算子で、「& …
-
-
CPU に制御を移す(DoEvents 関数)
DoEvents 関数 DoEvents 関数を実行すると、CPU に制御を移し …