配列(多次元配列・配列の次元の変更)
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 |
関連記事
-
-
日付時刻:日付時刻データを計算( DateAdd 関数 )
DateAdd 関数(日付・時刻の値を加算・減算結果を取得) 【書式】 resu …
-
-
Option Compare ステートメント
Option Compare ステートメントの使い方 【書式】 Option C …
-
-
Join 関数(配列の要素を結合)
Join 関数 1次元配列の各要素を指定した区切り文字で連結します。 【書式】 …
-
-
上付き文字・下付き文字(Superscript,Subscript)
上付き文字(Superscript プロパティ) Superscript プロパ …
-
-
フォントサイズ(Size プロパティ・StandardFontSize プロパティ)
フォントサイズを取得・設定する(Size プロパティ) Size プロパティは、 …
-
-
ポイント単位の値に変換(CentimetersToPoints,InchesToPoints)
CentimetersToPoints メソッド センチメートル単位の値をポイン …
-
-
対象のオブジェクトをクリアする(Clear メソッド)
Clear メソッド 対象となるオブジェクト全体をクリアします。Range オブ …
-
-
IME の現在の状態を取得します(IMEStatus 関数)
IMEStatus 関数の使い方 【書式】 result = IMEStatus …
-
-
文字列:文字列の空白を削除(Trim 関数, LTrim関数, RTrim関数)
Trim 関数・LTrim 関数・RTrim 関数の使い方 【書式】 <先頭と末 …
-
-
書式を変換(Format 関数)
Format 関数の使い方 【書式】 result = Format ( exp …