VBA|配列の記述方法(中編)【保存版】

エクセルVBA VBAの基礎・入門



前回は変数配列の部屋の作り方について説明しました。

参考:Excel VBA入門 その26:【入門編】配列の記述方法(前編)【保存版】

今回は、

配列の記述方法2 作った部屋にデータ(値)を入れる

について説明します。

配列の記述方法3 部屋に入れたデータを(必要なときに)取り出す」については次回の説明になります。

とにかく配列を使いたい!という人向けに説明していきますから、しっかりついてきてくださいね!



配列の記述方法2 作った部屋にデータ(値)を入れる

さて、静的配列と動的配列とで、部屋の作成方法が少し異なりますが、それ以降の操作である「作成した部屋にデータを入れる記述方法」には、両者に違いはありません。

なので、前回、静的配列と動的配列の違いがよくわからなかった人も、安心して読み進めてくださいね!

作った部屋にデータを入れる記述方法

作った部屋にデータを入れる記述方法は、以下のようになります。

変数名(部屋番号) = データ

ようするに、変数に()で囲んだ部屋番号を付けて、データを入れます。

配列だからといって、何か特別なことはしません。

変数に()で囲んだ部屋番号を付けるだけです。

ただし、ひとつだけ注意点があります。

作った部屋にデータを入れるときの注意点

配列変数にデータを入れる際には、どの部屋番号にデータを入れるかを指定しなければなりません。

つまり、今データが、「データ1・データ2・データ3」があるとした場合、

  • データ1を部屋番号0に入れる
  • データ2を部屋番号1に入れる
  • データ3を部屋番号2に入れる

というように、どのデータをどの部屋番号に入れるかを指定する必要があります。

それでは、具体的なVBAコードを見てみましょう。

作った部屋にデータを入れるVBAコードサンプル

Sub 部屋にデータを入れる()
   Dim hensu(2) As Variant    '宣言時には、()内に(部屋数-1)を記述する。
   hensu(0) = "みかん"  '部屋番号0に、文字列「みかん」を入れる。
   hensu(1) = "ぶどう"  '部屋番号1に、文字列「ぶどう」を入れる。
   hensu(2) = "スイカ"  '部屋番号2に、文字列「スイカ」を入れる。
   MsgBox hensu(0) & hensu(1) & hensu(2)  '部屋番号0~2に入っているデータを表示させる。
End Sub

データ「みかん」を部屋番号0に、データ「ぶどう」を部屋番号1に、データ「スイカ」を部屋番号2に入れています。

実行すると、以下のように、部屋番号0~2に入っているデータを表示させるメッセージボックスが立ち上がります。

上のコードで、配列変数にデータを入れる際に、どの部屋番号の部屋に入れるのかを指定しているのがわかると思います。

ただ、データを入れるのにいちいち部屋番号を指定するのは、すごく面倒ですよね。

実は、配列変数の部屋番号を指定しないくてもデータを入れることができる方法があります。

それはArray関数を使うことです。

Array関数を使って配列にデータを入れる方法

Array関数を使うと、いちいち部屋番号を指定しなくてもデータを入れることができます。

さらに、データをひとつひとつ部屋に入れていくのではなく、一括して入れることができます。

Array関数を使った記述方法は以下の通りになります。

変数名 = Array(データ1, データ2, データ3, ・・・)

分かりやすくするために、先ほどの「みかん、ぶどう、スイカ」を配列変数に入れるためのVBAコードをArray関数を使って書き直したものが以下のコードになります。

Sub 部屋にデータを入れる()
   Dim hensu As Variant    '宣言時には () を記述しない。
   hensu = Array("みかん", "ぶどう", "スイカ")  'データを一括してhensuに入れている。
   MsgBox hensu(0) & hensu(1) & hensu(2)    '部屋番号0~2に入っているデータを表示させる。
End Sub

Array関数を使う場合には、今までの方法と異なる点がいくつかあります。

  • 変数宣言時に、変数名に()を付けない。部屋数の指定はしなくてよい。
  • データを入れる際に、部屋番号を指定しない。自動で各部屋にデータが入る。

Array関数を使うと、「作成する部屋数の指定」や、「データを入れる部屋番号の指定」をしなくてもよくなります。

言い換えると、 「作成する部屋数の指定」や「データを入れる部屋番号の指定」を自動でやってくれるのです。

間違いやすいのが、Array関数を使うと部屋数や部屋番号は関係なくなる、と思いがちですがそれは大間違いです。

Array関数は、部屋数や部屋番号のことを自動的にやってくれるだけで、概念自体がなくなったわけではありません。

つまり、3行目の 

hensu = Array(“みかん”, “ぶどう”, “スイカ”)

を記述すると、

「データ数が3なので部屋を3つ作る」、「データを部屋番号0から順に入れていく」

ということが自動的に行われているのです。

ただそうなると、、、Array関数を使った方が良いのか、それとも従来のように部屋番号を指定してデータを入れたほうが良いのか、迷いますよね。

じつは、どちらを使っても問題ありません。

データ数が多いからと言って、データを一括登録できるArray関数を使うとコード上の問題でArray関数が適しない場合も多々あります。

どちらを使うべきか結論を言うと、状況に応じたケースバイケースということになります。

次回は、「配列の記述方法3 部屋に入れたデータを(必要なときに)取り出す」については次回の説明になります。




VBAの基礎・入門
ブイサバ【Excel VBAサバイバル】~とりあえずここに来れば解決できる~

コメント

  1. […] 配列の記述方法2 作った部屋にデータ(値)を入れる […]

  2. […] 参考:Excel VBA入門 その27:【入門編】配列の記述方法(中編)【保存版】 […]

  3. […] 参考:Excel VBA入門 その27:【入門編】配列の記述方法(中編)【保存版】 […]

タイトルとURLをコピーしました