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

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



前回は配列にデータを入れてみました。

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

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

今回は配列に入れたデータを取り出してみましょう。



配列の記述方法3 部屋に入れたデータを(必要なときに)取り出す

前回配列変数に入れたデータは、以下のとおりです。

  • 部屋番号0:みかん
  • 部屋番号1:ぶどう
  • 部屋番号2:スイカ

さて、各部屋にデータが入りましたが、入れたデータを取り出すにはどのような操作が必要なのでしょうか。

とても簡単なので、ぜひついてきてくださいね!!

部屋に入れたデータを取り出す記述方法

部屋に入れたデータを取り出すための記述は、以下の通りです。

取り出し先 = 変数名(部屋番号)

部屋番号に該当するデータが取り出されます。

取り出し先には、セルや違う変数などを指定します。

実際のVBAコードサンプルを示します。

データの取り出しのVBAコードサンプル

配列変数の部屋番号0~2にそれぞれ「みかん」「ぶどう」「スイカ」を入れ、それをセルA1~A3に出力するVBAコードです。

Sub 部屋のデータを取り出す()
   Dim hensu(2) As Variant    '宣言時には、()内に(部屋数-1)を記述する。
   
   hensu(0) = "みかん"  '部屋番号0に、文字列「みかん」を入れる。
   hensu(1) = "ぶどう"  '部屋番号1に、文字列「ぶどう」を入れる。
   hensu(2) = "スイカ"  '部屋番号2に、文字列「スイカ」を入れる。
   
   Cells(1, 1).Value = hensu(0)  '部屋番号0のデータをセルA1に出力
   Cells(2, 1).Value = hensu(1)  '部屋番号1のデータをセルA2に出力
   Cells(3, 1).Value = hensu(2)  '部屋番号2のデータをセルA3に出力
End Sub

実行するとセルA1~A3に各部屋のデータが入ります。

ちなみに、配列変数からデータを取り出したからといって、取り出された部屋が空になるわけではないので注意してくださいね。データは部屋に入った状態のままです。

データが入った部屋を空にするには、部屋を初期化するか、空のデータを部屋に入れる操作が必要になります。

部屋に入れたデータを(必要なときに)取り出す

以上のように、配列変数からデータを取り出すには、

取り出し先 = 変数名(部屋番号)

というように記述し、取り出す部屋番号を指定する必要があります。

ですが、じつは、部屋に入れたデータすべてを取り出す場合には、部屋番号を指定しなくても取り出すことが可能です。

それを説明します。

部屋番号を指定せずにデータを取り出す【全データ取り出し】

部屋番号を部屋に入れたデータすべてを取り出す場合にのみ使用できる記述方法です。

※ 全データ以外に、特定のデータだけを取り出すこともできますが、あくまでも応用の応用になりますので、今回は説明を割愛します。

取り出し先 = 変数名

これで、全部屋に入っているデータを取り出すことができます。

取り出し先には、他の変数名やセル範囲を指定します。

実際のVBAコードを見てみましょう。

部屋番号を指定せずにデータを取り出す【全データ取り出し】VBAサンプルコード

配列変数の部屋番号0~2にそれぞれ「みかん」「ぶどう」「スイカ」を入れ、それをセルA1~C1に出力するVBAコードです。

Sub 部屋のデータを取り出す()
   Dim hensu(2) As Variant    '宣言時には、()内に(部屋数-1)を記述する。
   
   hensu(0) = "みかん"  '部屋番号0に、文字列「みかん」を入れる。
   hensu(1) = "ぶどう"  '部屋番号1に、文字列「ぶどう」を入れる。
   hensu(2) = "スイカ"  '部屋番号2に、文字列「スイカ」を入れる。
   
   Range(Cells(1, 1), Cells(1, 3)).Value = hensu  '部屋すべてのデータをセルA1~C1に出力
End Sub

出力先は、データすべてが入るセル範囲を指定します。今回はデータが3個なので、3個のセルを範囲指定(A1~C1)しています。

実行結果は、以下のようになります。

って、さっきのエクセル表と形が違うんじゃない??

と気づくと思います(笑)

実は、部屋番号を指定せずにデータを取り出す方法だと、エクセル表の横(行)に取り出されることになってしまうのです。

ためしに、出力先セル範囲をA1~A3にして取り出してみると、以下のような実行結果になります。

Range(Cells(1, 1), Cells(3, 1)).Value = hensu  '部屋すべてのデータをセルA1~A3に出力

全部みかんになってしまいます(笑)

じつは、Excel VBAでは、配列変数のデータが格納される部屋は、エクセル表に例えると横(行)に進む仕様なのです。

【入門編】配列の記述方法【まとめ】

変数に部屋を作成し、データを入れ、取り出す方法について説明してきました。

きっと、配列を使うことに対して少しは慣れたと思います。

今後、配列を実際に使う際にいろいろなエラーが出ると思います。

ですが、配列の基本は、

「変数に部屋を作成」・「部屋にデータを入れる」・「部屋番号を指定してデータを取り出す」

です。配列の学習お疲れさまでした☆




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

コメント

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