
VBAなどの多くのプログラミング言語には、「配列」という機能が備わっています。
配列というのは、一つの変数の中に複数の値を持たせることのできる機能です。
配列とは何なのか、どんな時に使うのかも交えて解説していきます。
目次
配列について知ろう!
配列ってなに?
配列は上でも少し説明した通り、同じ変数の中に複数の値を保持させておくことが出来る機能です。
例えば、複数のバラバラなセルにループ処理で値を入力したいとします。
※こんな時ないと思いますけど、前に仕事で配列を使ったときにこんなケースがあったので笑
色のついたセルがターゲットです。
繰り返しセルに値を入れたいならば、ループ文で1セルずつ指定してやればいいのですが、このように入れるセルの間隔がバラバラな場合、ループ文でセルを指定するのは難しいです。
そこで、配列が登場します。
配列の変数に、ターゲットとなるセルの座標位置を全て入れておきます。
そして、ループ処理の時に配列にしまっておいた座標を呼び出して、そのセルに値を挿入さえるようにすれば実現させることができます。
実際にこの処理を作ってみる前に、まず配列の機能について知っておきましょう。
普通の変数と配列の変数の違い
配列の変数と普通の変数の中身を見てみると下のようになっています。
普通の変数は、1つの値だけを保持していますが、配列の変数はいくつもの値を保持しています。
そして、保持している値は「0」から始まる番号で管理しています。
上の図をみていて気付いた方もいるかもしれませんが、配列の変数名に「()」がついています。
この()に取得したい番号を入れる事で、値を引き出すことが出来ます。
例えば上の図だと、Hensu(2)とすることで、2番の値「7」を取得することが出来ます。
配列について何となくイメージ出来たでしょうか?
配列の変数の宣言の仕方
変数を配列にする場合、変数の宣言方法が普通の変数と違います。
おさらいですが、普通の変数の宣言は下のように行います↓
それに対して、配列の変数の宣言の仕方は下のように行います。
配列の宣言には、変数名に「()」付けるだけで配列として扱われるようになります。
①のパターンでは()の中に何個分の値を持たせるかを書きます。
ここで注意!上でもチラッと言いましたが、配列は「0」番からデータの個数を数えています。
なので、「0」から数えて必要な量を書く必要があります。
10個の値を持つ配列を宣言したいなら、()の中に9を入れます。
9は「0」から数えて10番目なので。
面倒くさいですが、「必要な量-1」の数値を()に入れればOKです。
①のパターンの使い方はこんな感じです↓
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Sub MessageTest() Dim Moji(10) As String '配列変数の宣言 '配列の各番号に値を代入 Moji(0) = "B" Moji(1) = "A" Moji(2) = "A" Moji(3) = "A" Moji(4) = "A" '配列の番号を指定して値を取得 MsgBox Moji(0) End Sub |
②のパターンは、持たせる個数が一定ではなく、場合によって変わってくる場合です。
どちらにしても、配列を使うには、この配列に何個分の値が入っているのかを宣言する必要があります。
処理中に持たせる配列の個数を導き出したら、下のように記述します↓
この文を書くことで、配列の量が決まり、配列の変数を使う事が出来るようになります。
②のパターンの使い方はこんな感じです↓
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
Sub MessageTest() Dim Moji() As String '配列変数の宣言 Dim Index As Integer 'A2セルから数量を取ってくる Index = Range("A2").Value '配列の数量を指定する ReDim Moji(Index) '配列の各番号に値を代入 Moji(0) = "B" Moji(1) = "A" Moji(2) = "A" Moji(3) = "A" Moji(4) = "A" '配列の番号を指定して値を取得 MsgBox Moji(0) End Sub |
配列を利用した処理を作ってみる
冒頭で例として紹介した、色のついたセルに値を順番に挿入していく処理を配列を使って実際に作ってみます。
コードはこんな感じです↓
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Sub MessageTest() Dim CelPoint(5) As String 'セルの座標を保持する配列変数の宣言 Dim lp As Integer 'ループ用の変数 CelPoint(0) = "L1" '1つ目のセル座標 CelPoint(1) = "H2" '2つ目のセル座標 CelPoint(2) = "I4" '3つ目のセル座標 CelPoint(3) = "P6" '4つ目のセル座標 CelPoint(4) = "H7" '5つ目のセル座標 CelPoint(5) = "M9" '6つ目のセル座標 'ループ処理で色付きセルに「A」を入れる For lp = 0 To 5 Step 1 Range(CelPoint(lp)).Value = "A" Next End Sub |
配列変数の中に色付きセルのセル座標をセットしておきます。
そして、ループ処理で0番から5番までの合計6個分のセルに「A」と挿入させます。
実行するとこのようになります↓
配列を使うときの注意点
配列を使うときには、以下の点に注意してください。
1.数量の指定は「0」から数えること!
上でも言いましたが、配列の番号は0から始まるので、0から数えて必要な分の数値を入力しましょう。
2.値は必ず変数の型と同じ型の物を代入すること!
配列は複数の値を扱えるのであって、複数の型を持っているわけではありません。
配列の変数を宣言した時に明記した型の値のものを代入するようにしてください。
3.宣言した数量を超えて配列に値を挿入するとエラーになる
「Hensu(3) As String」と宣言したのに、
「Hensu(4) = “あああ”」のように宣言した数量をオーバーして配列に代入しようとするとエラーになります。
まとめ
配列も、他のプログラミング言語でも使われる重要な機能です。
配列について書き出すと、「二次元配列」や「array」など、まだまだいろんな機能がありますが、ここでは基本についてしか触れません。
とは言っても、この基本が一番大事なので、しっかり覚えておきましょう。
■次のページ