第6回 VBA学習 ~配列~

プログラミング

配列とは

複数の区画を持つ変数のこと。区画にはデータが1つずつ入れることができる。

イメージはExcelのシートのセルです。

配列に入れる個々のデータを「要素」と呼びます。

また、配列のことを「配列変数」という場合もあります。

配列には各要素に「0」から始まる「インデックス番号」が降られており、各要素を区別するのに使用します。

配列を使用することで1つの変数として扱うことができるので、プログラム速度の改善や可読性に優れています。

配列の書き方

Dim 配列名(上限) As データ型
または
Dm 配列名(下限値 to 上限値) As データ型

実際のサンプル

Sub ArrayTest()

Dim MyArray As Integer

Dim MyArray2 As Variant

End Sub

このように入力できましたか?

サンプルの説明をすると

1つ目のMyArrayはInteger型のデータ配列を宣言しました。

よってInteger型以外は適用されません。

2つ目のMyArray2はVariant型のデータ配列を宣言しました。

僕のおすすめはVariant型宣言です。

理由は幅広く1つのデータ配列にぶち込むことができるからです。

例えばExcelシートのデータを配列にすべて格納することも出来ます。

配列に値を代入し出力する

サンプルです。

Sub ArrayTest2()

Dim MyArrayInt(2) As Integer

MyArrayInt(0) = 0
MyArrayInt(1) = 1
MyArrayInt(2) = 2

Debug.Print MyArrayInt(0)
Debug.Print MyArrayInt(1)
Debug.Print MyArrayInt(2)

End Sub

上のコードを実施した結果はこちらになります。

イミディエイトウィンドウにこのように出力されましたらOKです。

配列の最小値(LBound)と最大値(UBound)を使う

LBound関数は引数に指定した配列で使用できる最も小さいインデックス番号を返します。

UBound関数は引数に指定した配列で使用できる最も大きいインデックス番号を返します。

配列の要素数を調べるためにLBound関数とUBound関数はよく使われています。

では先ほどのサンプルArrayTest2を更に強化してみましょう。

Sub ArrayTest3()

Dim MyArrayInt(2) As Integer
Dim i As Integer
    
    MyArrayInt(0) = 0
    MyArrayInt(1) = 1
    MyArrayInt(2) = 2
    
    For i = LBound(MyArrayInt) To UBound(MyArrayInt)
      Debug.Print MyArrayInt(i)
    Next i

End Sub

結果はArrayTest2と同じであればOKです。

配列の中身をイミディエイトウインドウに表示するには1行ずつDebug.Printで宣言しなければなりません。

なので、For文を組み合わせてあげることでより簡潔にしてあげることができます。

まとめ

このように配列を上手く使うことで1つの塊として扱うことができます。

例えば曜日を配列に入れてもいいと思います。

配列を上手く使いこなしていきましょう!