初心者のためのExcelマクロ超入門(絶対できるVBA開発)

マクロがまったくわからない人のためにエクセルマクロやVBAについてできるだけわかりやすく書いています。Twitter:@shuhhohhey

初心者のためのExcel エクセルマクロVBA入門-多次元配列

前回で多次元配列のお話です。使い方もありますが、ほとんど前回の配列の配列と同じです。
違うのは書き方ですね。こんな感じで書きます。

Sub test()

    Dim strArray(22) As String
    
    strArray(0, 0) = Sheet1.Range("A1").Value

End Sub


以上。非常にわかりやすいと言えば分りやすいですよね?1つ目が行で2つ目が列です。つまりこれは、完全なマンション構造の配列という感じになります。もう見た目まで完全にそうです。
ちょうど、エクセルの表と同じように行列が対応しています。
ただし、大切なのはやっぱり要素は0から始まっていることです。つまり上の例では2×2ではなくて3×3の配列構造になっているということですね。

配列とセットで覚えるUbound関数


関数・・・( ゚д゚)・・・・


という言葉に騙されないでいいです。関数のお話はまた今度詳しくお話するとして、ここではUboundというものがどんなものか?を説明します。非常によく使うので、ここで取り上げたいと思います。

Ubound関数は配列の要素がいくつあるか?を教えてくれるものです。例えばHoge(32)という配列があったら、、、Ubound(Hoge)とすると、32という数字を教えてくれます。この「教えてくれる」というのを「結果を返す」という言い方をします。つまり、、、

Uboundは配列の要素の最大値を返してくれるもの(関数)


という意味です。では、2次元配列の場合はどうしたらいいでしょうか?Hoge(4, 6)という配列の4という数字を得たい場合です。この場合は・・・

Ubound(Hoge, 1)


と書いて、要素数を知りたい配列の名前と、その要素数が知りたい次元の番号をカンマで続けて書いて上げます。こうすると、ちゃんとUboundは4という数字を返してくれるわけです。


っで?何が便利なの?Uboundって?


一番効力を発揮するのは配列の要素ごとに処理を繰り返す時です。さらにその配列が動的配列だったらなおさらですね。例えば配列の各要素に3を足す。という処理をする場合に、配列の回数分3を足していかなければなりません。


hoge(0) = hoge(0) + 3
hoge(1) = hoge(1) + 3
hoge(2) = hoge(2) + 3
hoge(3) = hoge(3) + 3

・・・
・・・
・・・

ということですね。これがもし動的配列で、配列がいくつあるかわからない場合はどうしたらいいでしょうか?いきなり答えを書きますが・・・

For i = 0 To Ubound(hoge)

    hoge(i) = hoge(i) + 3

Next


これでOKです。繰り返し構文は今度詳しくやりますが、何が大切かというと、どれだけの回数繰り返せばいいか?ということをUboundを使うことで知ることができるという点です。


いかがでしょうか?多次元配列と、配列の配列。書き方は違えど、性質は意外と同じようなものです。これをマスターすれば、もうCSVの読み込みも怖くない!


次回はユーザー定義型の変数です。まだあんの?( ゚д゚)?となりますが、実は整理すればそんなに多くないですよ?

  • 変数
  • 配列
  • 配列の配列または多次元配列
  • ユーザー定義型

ね?たった4つです。英語の過去形の特別な例より少ないです。もう少し変数編も終わりです。頑張りましょう。

今日はここまで!


かしこ