facebook

【2026】VBA配列の使い方8選!静的・動的配列の違いやループ処理・2次元配列の使い方も解説!

VBAで使える配列は、複数のデータを効率よく管理・処理するうえで重要な機能として広く活用されています。業務の自動化や大量データの扱いをスムーズにするためには、配列の基本構造や使い方を理解しておくことが不可欠です。

本記事では、VBAにおける配列の基礎から、静的配列・動的配列の違い、具体的な使い方までを解説しますVBA配列の理解を深めたい方は、ぜひ参考にしてください。

おすすめのExcel・VBA講座はこちら

VBAの配列とは

VBAの基本
VBAにおける配列とは、複数の値を1つの変数でまとめて扱えるデータ構造です
通常の変数が1つの値しか保持できないのに対し、配列を使えば複数のデータを効率よく管理・処理できるようになります。

10人分の点数をそれぞれの変数で管理する場合、通常では10個の変数が必要になりますが、配列を使えば1つの配列変数でまとめて扱うことが可能です。

このように、繰り返し処理や大量のデータを扱う場面では、配列を利用することでコードを簡潔にできるため、保守性や実行効率を高めることができます

一方で、VBAやマクロによってエクセルに蓄積されたデータが増加すると、ファイルが重くなり処理速度の低下を招くケースがあるため注意が必要です。以下の資料では、エクセル業務を効率化するためのファイル管理のクラウド化やワークフローの自動化について学ぶことができます。

エクセル業務をより効率化したい方は、以下のリンクから資料を無料ダウンロードしてみてください。

エクセル業務効率化ガイドの無料ダウンロードはこちら

VBAの配列におけるインデックス番号とは

配列に格納されている要素にアクセスするための番号のことを「インデックス番号」と呼びますVBAにおける配列は、インデックス番号が0から始まるのが特徴です。

要素が5つある配列の場合、各要素のインデックスは以下のようになります。

インデックス番号 説明
配列(0) 1つ目の要素
配列(1) 2つ目の要素
配列(2) 3つ目の要素
配列(3) 4つ目の要素
配列(4) 5つ目の要素

また、デフォルトではインデックスは「0」から始まりますが、「Option Base 1」という記述をコードの先頭に記述することで「1」から始まる配列に変更できます。

VBAの静的配列と動的配列の違い

VBAの配列には静的配列と動的配列の2種類があります。業務効率化を図るうえでは、状況に応じた使い分けが重要です。

以下からは、それぞれの違いや特徴について見ていきましょう。

静的配列

静的配列とは、プログラムの最初に要素数をあらかじめ指定しておく配列です例えば、3つの果物を格納する配列を用意する場合、この配列は3つ分の要素を持つと最初に決めてから使う必要があります。

静的配列は要素数をあとから変更することができません。そのため、格納するデータの数が最初から分かっているような処理に適しています。

動的配列

動的配列とは、配列の宣言時には要素数を決めず、プログラムの途中で必要に応じて要素数を変更できる配列です

データ量が事前にわからない場合でも、必要に応じて要素を追加できるため、効率的に開発を行えます。

静的配列と比較してアクセス速度は遅くなる傾向にありますが、その分柔軟性の高い開発を行えるのが魅力です。

VBAの動的配列の変更方法と注意点

VBAでの動的配列の初期化や再設定にはRedimステートメントを使用します。Redimでの変更を行った場合は元のデータが消えてしまうため注意が必要です。

既存のデータを保持したまま変更を行いたい場合はPreserveを併記しましょう。

VBA配列の基本構文

VBA配列の基本構文は、静的配列と動的配列によって異なります。

静的配列:Dim 配列名(要素数) As データ型
動的配列:Dim 配列名() As データ型

配列名は自由に設定できるため、わかりやすい名前をつけましょう。果物のデータを格納するなら複数の果物を指す「fruits」とすることで、扱う情報を一眼で識別できます。

VBA配列の基本構文

Dim fruits(3) As String

上記のコードでは、4つ(0〜3)の要素を持つ文字列型の「fruits」という配列を宣言しています

VBA配列の基本的な使い方8選

VBA配列を使ううえで押さえておきたい、基本的な操作方法は以下のとおりです。

  1. 要素の代入
  2. 要素へのアクセス
  3. 配列の初期化
  4. 文字列の分割
  5. 文字列の結合
  6. 配列の要素数を取得する
  7. ループ処理の活用
  8. 2次元以上の配列

これらの使い方について見ていきましょう。

使い方①要素の代入

要素の代入

VBA配列の各要素にデータを代入するには、インデックス番号の指定が必須です。インデックスは0から始まるため、最初の要素は配列名(0)で指定します

Dim fruits(2) As String
fruits(0) = “りんご”
fruits(1) = “みかん”
fruits(2) = “バナナ”

このコードでは、3つの果物をfruitsという配列に代入しています。

使い方②要素へのアクセス

要素へのアクセス

配列に代入したデータは、インデックス番号を指定すればアクセスできます。

Dim fruits(2) As String
fruits(0) = “りんご”
fruits(1) = “みかん”
fruits(2) = “バナナ”

上記のような要素が格納されている場合、以下の指定を行うことで、A1セルに配列「fruits」のインデックス番号「1」の要素が出力されます。

Range(“A1”).Value = fruits(1)

インデックスは0から数えるので、今回のケースでは2番目の要素である「みかん」が出力されます。

使い方③配列の初期化

配列の初期化には、さまざまな構文が用意されています。代表的な「Eraseステートメント」と「Array()ステートメント」について見ていきましょう。

Eraseステートメント

Eraseステートメント

静的配列にEraseを使用すると、配列に格納されている要素の値が初期化されます
数値は「0」、文字列は「長さ0の文字列」に置き換わりますが、配列そのものの要素数は変わりません。

動的配列では、Eraseを使うと配列の要素だけでなく配列自体もメモリから解放されます。「Erase fruits」のようにEraseの後ろに配列を指定してみてください。

Array()ステートメント

Array()ステートメント

Array()ステートメントは、値を入れる際に型が自動で決まるVariant型の動的配列を初期化する際に使用できます。

Dim 配列名() As Variant
 配列名 = Array(要素0, 要素1, 要素2)

上記のように指定することで、要素数と初期値を同時に設定可能です。Array()ステートメントなら、要素の値を個別で指定できるのが、Eraseステートメントとの違いとなっています。

習得難易度の高いVBAを効率的に学びたいなら、エクセルのスクールに通うのがおすすめです。以下の記事では、VBAを学習できるおすすめスクールを厳選して紹介しています。VBAを本格的に学習したいと考えている方は、ぜひこちらもあわせてご覧ください。

【2026】VBAを習うおすすめスクール・セミナー15選!オンライン対応と選び方のポイントも解説

使い方④文字列の結合

文字列の結合

VBAでは、Join関数を使用することで、配列の要素を1つの文字列として結合できます。Join関数を使用した実際のサンプルコードは以下のとおりです。

Dim fruits() As Variant
fruits = Array(“りんご”, “みかん”, “バナナ”)

Dim result As String

result = Join(fruits, “, “)
Range(“A1”).Value = result

「Join(fruits, “, “)」では、一つ目の引数に結合したい文字列の配列を指定し、二つ目の引数に各要素を結合する際の区切り文字を指定している状態です

これにより、セルA1に「りんご, みかん, バナナ」と表示されます。

使い方⑤文字列の分割

前述したJoin関数の補足として知っておきたいのが、反対の役割を持つSplit関数です。

カンマ・スペースといった区切り文字で区切られている文字列を分割し、一括で配列を作成することができます。

使い方④と同じ書き方でコードを作成すると、「りんご,みかん,バナナ」が区切られたことにより、セルA1にはりんごのみが表示されます。

使い方⑥配列の要素数を取得する

VBAにおける関数では配列の要素数を取得できません。

配列の要素数を取得したい場合は、使用可能なインデックス番号の最大値を取得するUBound関数と、最小値を取得するLBound関数を利用します。

計算式は以下の通りです。

UBound関数の戻り値 – LBound関数の戻り値 + 1

この計算式を使うことで正確な数値を算出できます。

使い方⑦ループ処理の活用

配列に入っているデータを効率的に処理するなら、For Nextステートメントを利用したループ処理を取り入れましょう

決められた回数まで同じ処理を繰り返すFor Nextに前述したUBound関数を組み合わせることで、インデックス番号の最大値に到達するまでの処理を自動化できます。

VBAらしい処理の高速化を実現する組み合わせとしておすすめの使い方です。

使い方⑧2次元以上の配列

エクセルにおける行と列のように、縦・横の2方向で複数の行・列データを扱う場合は2次元配列を使用しましょう

セル範囲を一括で取り込んで処理する際に重宝する使い方です。

宣言する際には、以下のようにカッコ内をカンマで区切ることでより多次元の配列にすることができます。

Dim 配列名(行の要素数, 列の要素数,〜,〜,) As データ型

 

エクセル業務の効率化を進めるなら

膨大なデータをエクセルで扱う場合、ファイルの読み込みや保存に時間がかかり、作業効率が大幅に低下するケースが見られます特に関数やマクロを多用した複雑なシートは、再計算に時間を要し、業務のスピードを阻害する要因となるでしょう。

こうした問題の解決としてDX化の需要が高まっています。DX化のノウハウを知りたい方は、以下の資料をご利用ください。

エクセルファイル管理のクラウド化や正確なデータ入力のためのフォーム化などについて知ることができるため、日々のエクセル業務の効率化につなげられるはずです。

エクセル業務効率化ガイドの無料ダウンロードはこちら

VBAを学べるおすすめのセミナー

Excel VBA・マクロセミナー

エクセルのVBAは初心者ではとっつきづらく、学習を始めても難易度が高いため挫折してしまいがちです。初歩から効率的にVBAを学びたいならセミナーを利用しましょう。

Excel VBA・マクロセミナーでは、マクロの基本的な使い方やVBAの基礎構文について学べます

実際に転記や帳票作成の自動化を行いながら学習できるため、実務で使える実践的なスキルを身につけることが可能です。

これからVBAの学習を始める方はもちろん、一度VBAで挫折した方も、Excel VBA・マクロセミナーなら効率的に学習を進められるでしょう。

気になる方は、詳細をチェックしてみてください。

セミナー名Excel VBA・マクロセミナー
運営元GETT Proskill(ゲット プロスキル)
価格(税込)29,700円〜
受講期間2日間
受講形式対面(東京・名古屋・大阪)・ライブウェビナー・eラーニング

Excel VBA・マクロセミナーの詳細はこちら

VBAの配列についてまとめ

今回は、エクセルVBAの配列について紹介しました。配列は複数の値を1つの変数でまとめて扱えるデータ構造です配列を使えば、複数のデータを一括で処理できるため、VBAプログラムの可読性や実行速度を向上させられます。

また、動的配列ならデータ量が増減する状況において柔軟に対応できるのもメリットです。
VBAでのデータ処理を効率化したい方は、本記事の内容を参考に配列を活用してください。

VBAの配列とは?静的配列と動的配列の違いや基本的な使い方について解説!
最新情報をチェックしよう!