【VBA】Array関数で配列を簡単・手軽に作成する方法

目次

はじめに

VBAで配列を使う際、Dimで宣言してから、myList(0) = ..., myList(1) = ... のように、一行ずつ要素を代入していくのが基本です。しかし、あらかじめ中に入れるデータが決まっている場合、この方法は少し冗長に感じられますよね。

そんなときに非常に便利なのが Array() 関数です。この関数を使えば、まるで買い物リストを作るかのように、一行で手軽に配列を作成することができます。

この記事では、Array関数を使って配列をスマートに作成し、その内容をループで処理する基本的な方法を解説します。


Array関数を使ったサンプルコード

このマクロは、Array関数で4つの曜日の名前を持つ配列を作成し、その内容をB2セルから横方向に順番に書き出します。

完成コード

' Array関数で配列を作成する
Sub CreateArrayWithFunction()
    
    '--- 1. Array関数で配列を作成 ---
    Dim weekDays As Variant
    weekDays = Array("月", "火", "水", "木", "金")
    
    '--- 2. ループで配列の値をセルに書き出す ---
    Dim i As Long
    ' LBound/UBoundを使うと、要素数が増減してもコードの修正が不要
    For i = LBound(weekDays) To UBound(weekDays)
        ' B2セルを基準に、Offsetで列を右にずらしながら書き込み
        Worksheets("Sheet1").Range("B2").Offset(0, i).Value = weekDays(i)
    Next i
    
    MsgBox "曜日のリストをセルに書き出しました。"

End Sub

コードの解説

1. Array関数による配列作成

weekDays = Array("月", "火", "水", "木", "金")

これが Array関数の最も基本的な使い方です。

  • Dim weekDays As Variant: Array関数が返すのはVariant型の配列なので、格納する変数は Variant 型で宣言します。
  • Array(...): カッコの中に、カンマ区切りで配列に入れたい値を好きなだけ並べます。文字列、数値、日付などを混在させることも可能です。
  • Array関数で作成した配列のインデックス番号は、デフォルトでは 0 から始まります。この例では、weekDays(0) に “月” が、weekDays(1) に “火” が…というように格納されます。

2. LBound / UBound との組み合わせ

Array関数で作った配列も、通常の配列と同様に LBoundUBound を使ってループ処理するのが定石です。

  • LBound(weekDays)0 を返します。
  • UBound(weekDays)4 を返します(要素が5つのため)。

これにより、Array関数の中の要素数を後から変更しても、Forループのコードは一切修正する必要がなく、非常にメンテナンス性が高くなります。


まとめ

今回は、Array関数を使って手軽に配列を作成する方法を解説しました。

  • あらかじめ中身が決まっている少量のデータを扱うなら、Array関数が非常に便利。
  • Array関数で作成した配列を格納する変数は Variantで宣言する。
  • 作成した配列は、LBound / UBound と組み合わせて安全にループ処理できる。

Dimで宣言する方法とこのArray関数を使い分けることで、VBAでのデータ処理がより効率的になります。ぜひ、状況に応じて最適な方法を選んでみてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次