【VBA入門】配列の使い方を徹底解説!宣言からループ処理まで

目次

はじめに

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, 23つの要素を格納できる箱が用意されます。
  • 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) i0 のときは、Offset(0, 0)(B2セル自身)に departmentList(0)(”人事部”)が書き込まれます。i1 のときは、Offset(1, 0)(B3セル)に departmentList(1)(”営業部”)が書き込まれ…というように、処理が繰り返されます。


まとめ

今回は、VBAにおける配列の最も基本的な使い方を解説しました。

  • Dim 配列名(開始 To 終了) As データ型 で宣言する。
  • 配列名(インデックス番号) で各データにアクセスする。
  • For ループと組み合わせることで、大量のデータを効率的に処理できる。

配列は、VBAでデータを自在に操るための第一歩です。この基本をマスターすれば、より複雑で実用的なプログラムを作成する道が開けます。

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

この記事を書いた人

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

目次