2次元配列の使い方
記事「 配列の使い方を整理」で説明したように
以下の順番でみていきます。
1. Variant型の変数にArray関数を使って配列をいれる。
2.配列を宣言してそれぞれの要素を指定する。
2-a. 固定長配列
2-b. 動的配列
以下の例で使う2次元配列は3x5のサイズです。
配列の内容は
コードの最後でシートに書き出すようになっていますが、
要所要所でウォッチウィンドウで配列の状態を確認してみると
流れがわかります。
まず、1つ目からみます。
1. Variant型の変数にArray関数を使って配列をいれる。
2次元配列はめんどくさくてあまり使っていなかったので
深く考える機会も今までなかったのですが、
Array関数は1次元配列のためのもののようですね。
とりあえず入れ子状にしたら
2次元配列らしきものができました。
この方法に全く実用性はないと思いますが、
各要素を指定する変数が少し変わっていたので
面白いと思いました。
2次元配列の各要素の指定方法は
a(i, j) のようにするのですが、
Array関数を入れ子したこれは、a(i)(j)とします。
サンプルコードはこちら
Sub macro101016a() Dim a As Variant |
2つ目です。
2-a. 固定長配列
1次元配列と同様に
配列の宣言をしてFor文を使って各要素に値を入れる流れは同じです。
配列の宣言は次のようにします。
Dim a(2, 4) As String
これで3行5列の配列が宣言されました。
2次元配列では各要素にアクセスするために
For文を入れ子します。
For i = 0 To UBound(a, 1)
For j = 0 To UBound(a, 2)
a(i, j) = 何らかの値
Next j
Next i
UBound関数の使い方にも注目。
1次元目の最大の添え字 = UBound(a, 1)
2次元目の最大の添え字 = UBound(a, 2)
サンプルコードはこちら
Sub macro101016b() Dim a(2, 4) As String |
最後は、
2-b. 動的配列
まず動的配列を宣言する。
Dim a() As String
次に、配列のサイズを指定する。
ReDim a(2, 4)
配列の各要素にアクセスする方法は
固定長配列と同様です。
サンプルコードはこちら
Sub macro101016c() Dim a() As String '配列の内容をシートに書き出す |
配列の使い方のモヤモヤが晴れて
すっきりしました。
Excelはシートを配列代わりに使えるので
配列を使わなくてもやっていけますが、
処理の速度のことを考えたら
一回一回セルに値を入れるのはよくないな~と思ってはいました。
まだ試作段階のプロシージャは
逐一、値の変化が見えた方が便利なので
ついついそのままでした。
よし、これからは最終段階では配列を使おう。
| 固定リンク
この記事へのコメントは終了しました。

コメント