配列とは

Excel VBA で具体的に配列の利用方法を見ていく前に、配列とはどのようなものかについて簡単に解説します。

(Last modified: )

配列とは

例えば変数を使っていくつかの文字列を格納する場合を考えて見てください。

Dim pref1 As String
Dim pref2 As String
Dim pref3 As String
Dim pref4 As String
Dim pref5 As String
Dim pref6 As String
Dim pref7 As String

pref1 = "東京都"
pref2 = "大阪府"
pref3 = "愛知県"
pref4 = "福岡県"
pref5 = "北海道"
pref6 = "神奈川県"
pref7 = "広島県"

都道府県の名前を格納するために変数を用意した場合、格納したい都道府県の数だけ別々の変数が必要になります。同じ目的で利用しているのに変数名は全部異なりますし、数が多くなってきた場合変数を定義するだけでも大変です。

このように同じ型の変数を同じような目的で利用する場合に便利なのが配列です。配列は変数を1つ1つ定義するのではなく、まとめて定義することができます。例えば下記のような感じです。

Dim pref(6) As String

pref(0) = "東京都"
pref(1) = "大阪府"
pref(2) = "愛知県"
pref(3) = "福岡県"
pref(4) = "北海道"
pref(5) = "神奈川県"
pref(6) = "広島県"

簡単に説明しますと、「name」という名前を持つ変数に全部で7つの値を格納できるよう領域を確保します。それぞれの領域を区別するために変数名の後に括弧の中に番号をふって区別します。このようなものを配列といいます。そして配列の1つ1つの領域を配列の要素と言います。

配列は同じ目的で利用する変数を別々に定義するのではなく、1つの変数名に対して複数の要素を確保することでまとめて管理するためのものです。

配列のメリット

配列は変数の定義が簡単と言うメリットだけではありません。配列の1つ1つの要素はインデックス番号を使って区別できますので、次のようなことが可能になります。

例としてある文字列が都道府県名と同じかどうかを判別するプログラムを書くことを考えてみましょう。配列を使わない場合には例えば次のようになります。

Dim pref1 As String
Dim pref2 As String
Dim pref3 As String

Dim src As String
Dim msg As String

pref1 = "東京都"
pref2 = "大阪府"
pref3 = "愛知県"

src = "茨城県"

If src = pref1 Then
    msg = "一致しました"
ElseIf src = pref2 Then
    msg = "一致しました"
ElseIf src = pref3 Then
    msg = "一致しました"
End If

調べたい文字列をIf文を使って順に比較していきます。Select文を使っても同じような形になります。

今度は配列を使った場合を考えてみましょう。

Dim pref(2) As String
Dim i As Integer

Dim src As String
Dim msg As String

pref(0) = "東京都"
pref(1) = "大阪府"
pref(2) = "愛知県"

src = "茨城県"

For i = 0 To 2
    If src = pref(i) Then
        msg = "一致しました"
    End If
Next i

配列の各要素はインデックス番号を変えることで最初から最後までの要素を順に取り出すことができます。インデックス番号は整数ですので、For文を使ってインデックス番号を変えて繰り返し処理することで、配列に格納された各要素と順に比較するといったプログラムを記述する事ができます。

今回の例のように比較する対象が3つしかない場合にはどちらでもよさそうですけど、これが100個とかになった場合を考えれば配列のメリットがお分かり頂けるかと思います。

では次のページから実際に配列を使う方法を確認していきたいと思います。

-- --

Excel VBA における配列とはどのようなものかについて解説しました。

( Written by Tatsuo Ikura )

プロフィール画像

著者 / TATSUO IKURA

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。