【ExcelVBA入門】使いこなすと便利な動的配列の使い方について徹底解説!

こんにちは、フリーランスエンジニア兼ライターのワキザカ サンシロウです。

皆さんは、VBAで配列を使ったことがありますか?

データをひとまとめにして使いたい場合に、配列はよく使います。

なかでも、動的配列の使い方を覚えておくと応用的なコードが書けるのでおすすめです!

そこで今回は、

・配列とは

・静的配列・動的配列の違いとは

といった基礎的なことから、

・VBAで動的配列を書く方法

・要素数を意識せずに配列の要素を追加する方法

・その他おすすめな配列操作方法

といった応用的な方法まで、徹底的に解説します!

配列とは

最初に、配列について簡単に解説します。

配列とは、「一度に複数の値を格納することができる変数」のことです。

配列内のひとつひとつのデータは、要素と言います。

要素には添字を指定することで、データにアクセスすることができます。

言葉だけではわかりづらいので、簡単なサンプルを用意しました。

サンプルコード:

この例では、「strMessage」が配列になっており「strMessage(3)」と指定することで、要素が3つの配列を宣言しています。

strMessage(1)」「strMessage(2)」「strMessage(3)」のようにそれぞれアクセスすることで、値の出し入れをすることができます。

このように、まとめてデータを保存しておきたいときに使えるのが配列です。

静的配列・動的配列の違いとは

配列には、静的配列動的配列の2種類があります。

2つの違いは、次の通りです。

  • 静的配列:宣言時に要素数を指定
  • 動的配列:後で要素数を指定

こちらも言葉だけではわかりにくいので、サンプルコードを用意しました。

サンプルコード:

変数宣言時に、「Dim strMessage(3) as String」のように要素を指定しているのが静的配列で、「Dim intNum() as Integer」のように要素の指定がないのが動的配列です。

動的配列の場合は、「Redim intNum(2)」のように配列の要素数を後から指定して使うことができます。

静的配列で宣言してしまった場合は、後から要素数の変更ができないので、動的配列の使い方を覚えておくのがおすすめです!

VBAで動的配列を書く方法とは

次に、動的配列の使い方について詳しく解説します。

動的配列の変数宣言方法

はじめに、動的配列の変数を宣言する方法について解説します。

静的配列と動的配列の違いで説明した通り、変数宣言時は要素数なしで次のように宣言します。

サンプルコード:

型にはInteger型String型Double型など通常の変数と同じように型を設定することができます。

変数名にカッコ()をつけるだけなので、覚えやすいですね。

動的配列の初期化方法

次に、動的配列の初期化方法について解説します。

配列を初期化するためには、Redimを使って次のように書きます。

使い方:

サンプルコード:

要素数に1以上の数値を入れることで、配列の要素を作ることができます。

動的配列に値を入れる方法

次に、動的配列の要素に値を入れる方法について解説します。

値を入れる場合は、配列名(要素)を指定して値を入れます。

使い方:

サンプルコード:

動的配列に後から要素を追加する方法

次に、要素を後から追加する方法について解説します。

配列に値を入れた後に要素を追加したい場合は、Redimで再度要素数を宣言します。

使い方:

サンプルコード:

実行結果:

ただし、1点注意点があります。

Redimで要素数を再設定すると、もともと入っていたデータクリアして要素数を追加してしまいます。

そのため、実行結果のように、「intNum(1)」「intNum(2)」に入れた値が初期化されて0になるわけですね。

元のデータを残しつつ要素を追加したい場合は、Redimで要素数を増やすときにPreserveをつける必要があります。

Preserveを付けたサンプルコード:

実行結果:

要素を追加して初期化したい場合Redimのみ、値を残しつつ要素を追加したい場合PreserveをつけてReDimと覚えればOKです。

応用編:要素数を意識せずに要素を追加する方法

先ほどのようなシンプルな処理であれば、要素数を確認してReDim要素を追加するのは簡単かもしれません。

ただ、配列の数が増えてくると、全ての配列の要素数を意識しながらコードを書いていくのは難しいため、要素数を意識せずに要素を追加する方法を覚えておくのがおすすめです!

UBOUND関数を使えば、簡単に配列の要素数を取得することができます。

使い方:

サンプルコード:

実行結果:

UBOUND関数で要素数を取得して、1足した数で要素数を追加すれば、要素数を意識せずに1つ要素を追加することができます。

要素数を意識せずに要素を追加するサンプルコード:

実行結果:

補足:その他の配列操作について

ここまで配列、静的配列と動的配列の違い、動的配列の使い方について解説してきました。

配列はとても奥が深いため、他の記事でも使い方をまとめています。

配列の初期化配列操作総まとめについて以下で詳しく解説しているので、合わせてみてみるのがおすすめです!

【VBA入門】配列の初期化(ReDim、Preserve、Array、Erase)
更新日 : 2019年4月21日
【VBA入門】配列総まとめ(初期化、ループ操作、コピー、結合、比較)
更新日 : 2019年4月18日

まとめ

今回は、VBAで動的配列を操作する方法について解説しました。

一度にまとめてデータを使いたい場合、動的配列を使うケースはよくあります。

今回解説した方法は使い方も簡単なので、ぜひ使ってみてくださいね!

LINEで送る
Pocket

最短でエンジニアを目指すなら侍エンジニア塾

cta_under_bnr

侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

無料体験レッスンの詳細はこちら

書いた人

Sanshiro Wakizaka

Sanshiro Wakizaka

フリーランスエンジニア兼ライターのワキザカ サンシロウです。
ExcelVBAの自動化ツール開発、WEB開発をメインにエンジニア業務をこなしつつ、サムライエンジニアにてライター業務をしております。

プログラミングをこれからやってみたい方に向けて、ためになる記事を全力で書いていきますので宜しくお願い致します!

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説