配列(多次元配列・配列の次元の変更)
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 |
関連記事
-
指定した値を16進数で表記した文字列に変換する(Hex 関数)
Hex 関数 の使い方 【書式】 result = Hex ( expressi …
-
Option Compare ステートメント
Option Compare ステートメントの使い方 【書式】 Option C …
-
ユーザー定義関数:セルを取得する(ThisCell プロパティ)
入力されたセルを取得する ワークシート上で使用する Function プロシージ …
-
式を評価し、結果(真・偽)に応じた式・値を返す(IIf 関数)
IIf 関数 の使い方 IIf(アイイフ)関数は、式を評価してその結果(真・偽) …
-
乱数ジェネレータを初期化 (乱数系列を再設定) する(Randomize ステートメント)
Randomize ステートメントの使い方 Rnd 関数 を使用する前に使用しま …
-
引数が省略されたかどうかをチェックする( IsMissing 関数 )
IsMissing 関数の使い方 【書式】 result = IsMissing …
-
データをクリアする(ClearContents メソッド)
ClearContents メソッド 対象がセル範囲(Range オブジェクト) …
-
ユーザー設定リストを使って並べ替える(Sort)
VBAでリスト、テーブルを並べ替える(Sort) VBAで、ソートを行うには、S …
-
文字列:指定した文字の文字コードを取得する(Asc 関数)
Asc 関数 【書式】 result = Asc ( string ) 引数・戻 …
-
CPU に制御を移す(DoEvents 関数)
DoEvents 関数 DoEvents 関数を実行すると、CPU に制御を移し …