【VBA/マクロ】配列の使い方・宣言方法

ExcelのVBA(マクロ)での配列の使い方や宣言方法についてまとめました。

【配列とは】使い方

配列(Array)とは、「データを一列に並べたもの」で、複数のデータを1つの変数で扱いたい場合に利用します。

【VBA】2次元配列の使い方・宣言方法【Excelマクロ】
ExcelのVBA(マクロ)での2次元配列の使い方や宣言方法についてまとめました。

動画解説

本ページの内容は以下動画でも解説しています。

VBAでは、「固定長配列」「動的配列」の2種類を宣言できます。

種類 説明 宣言例
固定長配列 要素数と次元数が固定された配列 Dim 配列名(添字の上限値) As データ型名
動的配列 要素数と次元数を途中で変更可能な配列 Dim 配列名() As データ型名

サンプルコード

サンプルプログラムのソースコードです。

Sub test()

    '文字列型の配列を宣言(要素数は3で固定)
    Dim member(2) As String

    '0番目要素に文字列を代入
    member(0) = "アベンジャー"

    '1番目要素に文字列を代入
    member(1) = "バゼット"

    '2番目要素に文字列を代入
    member(2) = "カレン"

    '1番目要素を取り出して表示'
    MsgBox member(1) 'メッセージボックスに「バゼット」と表示'

End Sub

「Dim member(2) As String」で固定長配列を宣言しています。
添字の最大値が「2」なので、要素番号0、1、2まで扱えます。
よって、要素数は3となります。

動的配列を使って要素数を増やしたい場合は以下のように記述します。

Sub test()

    ' 文字列型の配列を宣言
    Dim member() As String

    ' 要素番号の上限値を3に変更
    ReDim member(3)

    '0番目要素に文字列を代入
    member(0) = "アベンジャー"

    '1番目要素に文字列を代入
    member(1) = "バゼット"

    '2番目要素に文字列を代入
    member(2) = "カレン"

    '3番目要素に文字列を代入
    member(3) = "ランサー"

    '1番目要素を取り出して表示'
    MsgBox member(2) 'メッセージボックスに「バゼット」と表示'

End Sub

Array関数を使うと、次のようにコンパクトに配列に値をセットすることができます。

Sub test()

    '変数を宣言
    Dim member As Variant

    '変数の値に配列をセット
    member = Array("アベンジャー", "バゼット", "カレン")

    '1番目要素を取り出して表示'
    MsgBox member(1) 'メッセージボックスに「バゼット」と表示'

End Sub

Variant型変数の値として、配列を格納することができます。
その場合、Array関数を使って配列要素をまとめて指定することが可能です。
(※Variant型の配列ではなく、配列を値として持つバリアント型変数であることに注意)

【2次元配列】使い方

通常の配列は、データを1列に並べるため、1次元配列です。
それに対して、2次元配列は縦横の2次元で配列を考えます。
2次元で配列を考えると、表のデータなど、2次元のデータを扱う際には便利です。

■1次元配列
[“アベンジャー”, “バゼット”, “カレン”, “ランサー”]

■2次元配列
[[“アベンジャー”, “バゼット”],
[“カレン” , “ランサー”]]

VBAで2次元配列を宣言するには次のように記述します。

Dim 配列名(添字の上限値1, 添字の上限値2, ...) As データ型名
パラメータ 説明
添字の上限値1 縦の要素数
添字の上限値2 横の要素数

サンプルコード

サンプルプログラムのソースコードです。

Sub test()
    '文字列型の配列を宣言
    Dim member(1, 1) As String

    '要素(0, 0)に文字列を代入
    member(0, 0) = "アベンジャー"

    '要素(0, 1)に文字列を代入
    member(0, 1) = "バゼット"

    '要素(1, 0)に文字列を代入
    member(1, 0) = "カレン"

    '要素(1, 1)に文字列を代入
    member(1, 1) = "ランサー"

    '1番目要素を取り出して表示'
    MsgBox member(0, 1) 'メッセージボックスに「バゼット」と表示'

End Sub

関連ページ

【VBA入門】基礎から作業自動化の応用例まで解説
VBA(マクロ)で様々な処理を自動化する方法をサンプルコード付きで入門者向けにまとめました。

コメント