注目キーワード
  1. VBA
  2. 関数
  3. ショートカット

【VBA】配列と2次元配列について【入門】

  • 2019年2月23日
  • 2019年4月3日
  • VBA
  • 83回
  • 1件
VBA NO IMAGE

前回の記事ではVBAでの

変数の宣言・変数の型について解説しました。

この記事では

配列とは?

配列の使いかた

2次元配列とは?

以上について解説していきます。

初めのうちは配列の使い道がわからない場合が多いですが、使わなくても最低限のプログラムが組めるので

VBAのプログラム作成になれてきたら実際に使用して覚える方が効率的に学習できます。

配列とは?

「配列」とは、複数のデータをまとめて扱えるようにしたデータ構造の事です。VBAでは単に「配列」といった場合は配列データを収めることができる「配列変数」のことを指します。ここでは、VBAにおける「配列」の概要について解説します。

・配列と変数

変数は「入れ物」のイメージで説明され、通常の変数はそこに1つの値だけを代入するのに対して配列は1つの「入れ物」に複数の「仕切り」があるイメージです。

その1つ1つの仕切りに値を代入することができます。この「仕切り」のことを「要素」といいます。

配列には、同じように処理したいデータのグループを収めて使います。
処理対象のデータが大量にある場合、それを1つずつ変数にいれていくと大量の変数を用意しなければならなくなります。

配列と繰り返しの処理を組み合わせれば、処理するデータがいくつあっても、用意する変数は1つだけで済みます。

特に2次元配列まではExcelのワークシートのセル範囲とデータ構造に互換性があり、簡単にデータのやりとりができます。

・配列のインデックス

配列の中でも最も基本的な「1次元配列」の場合はデータを収める「仕切り」が横方向に1列に並んでいるイメージです。
配列の中のデータを特定するために、「仕切り」の左側から順番に番号が付けられています。

この番号のことを「インデックス」といいます。VBAの配列の場合は最小値が0となります。

データを収めるための「仕切り」を縦と横の2方向に並べた配列のことは「2次元配列」といいます。

この場合は縦方向にも最小値が0として番号が付けられExcelのワークシートの列番号と行番号のような構造になります。

配列を利用する

ここでは実際に配列をコードの中で使用する方法を紹介します。配列も最初に宣言して使用しますが、配列に収める要素の数を固定にするか可変にするかで宣言の方法が変わっていきます。

・1次元配列を使用する

コードの中で並列を使用するには、普通の変数と同様に、事前にDimスタートメントを使って宣言します。

配列の名前は変数と同様に付けることが出来ますが、名前の後ろに「()」を付けて、配列変数であることを示します。

データ型を指定すると、配列に含まれるすべての要素がすべて同じデータ型になります。

配列には大きく分けて「固定長配列」(静的配列)と「動的配列」の2種類があります。固定長配列を宣言する場合は、変数名の後の「()」の中にインデックスの最大値を指定します。

配列のインデックスは通常は0から始まるので実際に指定する値は1少なくなります。

宣言した配列は、「()」にインデックスを指定して使います。3つの要素の配列の2番目の位置に数値を代入する方法は、次のようになります。配列からデータを取り出す場合も、同様にインデクスで位置を指定します。

2次元配列を使用する

コードの中で2次元配列を使用する場合は、2つのインデックスの最大値を「,」(半角カンマ)で区切ってしてします。最初のインデックスが行(縦)2つ目のインデックスが列(横)の指定になります。

以後のコードでこの配列を使用する場合も、2つのインデックスで要素の位置を指定し、代入や値の取り出しを行います。

動的配列を使用する

「動的配列」とは、宣言の時点では配列の要素の数を決めずに、コードの中で状況に応じて要素の数を変化させることができる配列のことです。
配列の次元数も変更可能です。

動的配列を使用する場合は、変数名の後の「()」には何も入れずに宣言を行います。

この時点では、配列の仕切りがないため、データの取り出しが出来ない状態のため、動的配列に要素の数を決める必要があります。「ReDimスタートメント」を使って動的配列の要素の数を指定します。

また、ReDimスタートメントを使うと一度設定した動的配列の要素の数を後からでも変更することが可能です。

ただしすでに配列にデータが代入されている場合は要素の数を変更するとデータが失われてしまうため、代入されたデータを保持したままで配列の要素の数を変更する場合は「ReDimスタートメント」で「Preserveキーワード」を使用します。

このキーワードを指定する場合に変更できるのは最後の次元の要素の上限のみです。

・複数のデータを使用して1次元配列を作成する

ここまでで紹介してきた配列の使用方法は、配列を作成してその中に1つずつデータを代入する手順でしたが、「Array関数」を使用すると、配列に入れるすべてのデータを直接引数に指定して動的配列的に一度に代入することができます。

ただし、この場合の配列のデータ型はバリアント型にする必要があります。

まとめ

今回はVBAの配列について解説しました。

配列には明確な使いかたというよりは処理を高速化したり、プログラムを簡潔に記述したり

といった場面で使用される場合が多いので、初めのうちは無理に覚えなくても大丈夫です。

前の記事から読み直す場合はこちらです。

【VBA】変数と変数の型について【入門】

VBAの記事一覧はこちらからです。

【基礎から学べる】ExcelマクロとVBA【入門】

NO IMAGE
最新情報をチェックしよう!