VBA41_大事な「配列変数」を忘れてました

こんにちは! Benです。VBA一覧メニューを整理していたら大事なのを忘れていました。それは配列変数です。

20160416a.png
配列変数とは、ご覧のように変数名の後ろに括弧付きの要素数を付けて宣言すると、その数の分(この場合正確にはゼロもあるので+1)の変数が扱えるものです。この例ではa(3)なのでa(0),a(1),a(2),a(3)の4つの変数を個別に使用できます。えっ?a,b,c,dとかの変数でいいんじゃないの?…と思う方もいると思いますが、配列はとても便利な使い方があります。

20160416b.png
例えば、ご覧のシートの2列目の気温10日分を変数に格納するとします。データを読み取ってそれを加工して出力するのはよくあることです。その読み取りを別々の変数で行うと、データの数だけ代入文を書かないといけません。そういうときに要素数にループ変数を使って一気に配列変数に格納します。

Sub DataRead()
  Dim T(10) As Single, i As Integer
  For i = 1 To 10
    T(i) = Cells(i + 1, 2)
    MsgBox "T(" & i & ")の値は" & T(i)
  Next
End Sub
コードはこんな感じです。2行目は宣言文。T(10)は気温を格納する小数型、iはループ用です。3行目と6行目でデータ数分だけループします。4行目が代入文でセルのi+1行2列の値をT(i)に代入しなさいというものです。iは1から10まで1ずつ増えていくので、1のときはセルの2行2列目の値をT(1)に、i=2のときは3行2列目の値をT(2)にと、セルは一つずつ下にずれて読み込み、気温も一つずつ括弧内の数字が増えながら格納します。ちなみに5行目は確認用のメッセージボックスなので、本来のプログラムでは必要ありません。

20160416c.png 20160416d.png
実行結果はご覧のとおりです。しっかりと配列変数に格納されていることがわかります。今回は10日分ですが、これが例え1か月や1年分になっても要素数とループの回数を増やすだけでコードが増えることはありません。でもそうなると確認用のメッセージボックスが大量に出ます 実は実際のコード作成時で変数の値を確認するのに、メッセージボックスはほとんど使いません。次回はその辺をノートしたいと思います。

この記事へのコメント


この記事へのトラックバック