はじめに
VBAで複数のデータを扱う際、「変数」をデータの数だけ用意するのは大変ですよね。例えば、12ヶ月分の売上データを扱うのに、12個の変数を宣言するのは非効率です。
こんなときに活躍するのが「配列」です。配列は、複数のデータを格納できる、仕切りのついた大きな箱のようなものです。一つの変数名で、番号(インデックス)を使って各データにアクセスできるため、大量の関連データをすっきりと効率的に管理できます。
この記事では、VBAプログラミングの基本である「配列」の宣言方法から、値の代入、そしてループ処理での活用方法までを、初心者の方にも分かりやすく解説します。
配列の使い方: 基本的なサンプルコード
このマクロは、3つの部署名を格納した配列を作成し、その内容をループ処理でB2
セルから下方向に順番に書き出します。
完成コード
' 配列の基本的な使い方
Sub BasicArrayExample()
'--- 1. 配列の宣言 ---
' 0から2までの3つの要素を持つ、文字列(String)型の配列を宣言
Dim departmentList(0 To 2) As String
Dim i As Long ' ループカウンター用の変数
'--- 2. 配列の各要素に値を代入 ---
' インデックス番号を指定して値を格納
departmentList(0) = "人事部"
departmentList(1) = "営業部"
departmentList(2) = "開発部"
'--- 3. ループ処理で配列の値をセルに書き出す ---
For i = 0 To 2
' B2セルを基準に、Offsetで行を下にずらしながら書き込み
Worksheets("Sheet1").Range("B2").Offset(i, 0).Value = departmentList(i)
Next i
MsgBox "配列の内容をセルに書き出しました。"
End Sub
コードの解説
1. 配列の宣言
Dim departmentList(0 To 2) As String
これが配列を宣言する部分です。
Dim departmentList(...)
:departmentList
という名前の変数を宣言しています。(0 To 2)
: これが配列のサイズとインデックス番号の範囲を指定する部分です。「インデックス番号0
から2
まで」という意味になり、結果として0
,1
,2
の3つの要素を格納できる箱が用意されます。As String
: この配列に格納するデータの型が文字列であることを指定しています。
2. 配列への値の代入
departmentList(0) = "人事部"
配列の特定の場所に値を入れるには、変数名(インデックス番号)
の形で指定します。departmentList(0)
は、departmentList
配列の0番目の(つまり最初の)仕切りを指します。
3. ループ処理での活用
For i = 0 To 2
配列は、このように For
ループと非常に相性が良いです。ループカウンター変数 i
を、配列のインデックス番号 0, 1, 2
と対応させることで、配列の全要素に対して順番に同じ処理を行うことができます。
...Offset(i, 0).Value = departmentList(i)
i
が 0
のときは、Offset(0, 0)
(B2セル自身)に departmentList(0)
(”人事部”)が書き込まれます。i
が 1
のときは、Offset(1, 0)
(B3セル)に departmentList(1)
(”営業部”)が書き込まれ…というように、処理が繰り返されます。
まとめ
今回は、VBAにおける配列の最も基本的な使い方を解説しました。
Dim 配列名(開始 To 終了) As データ型
で宣言する。配列名(インデックス番号)
で各データにアクセスする。For
ループと組み合わせることで、大量のデータを効率的に処理できる。
配列は、VBAでデータを自在に操るための第一歩です。この基本をマスターすれば、より複雑で実用的なプログラムを作成する道が開けます。