ゆんの業務改善ブログ

①生産性向上 ②業務改善 ③自動化 について情報発信しています。VBAプログラムは本当の初心者から他のアプリケーションを呼び出して使う上級者的な使い方まで幅広いレベルで解説していきます。

VBA 配列を徹底的に解説する (全5回) ①イメージをつかむ

VBAを使い初めてしばらくはシート上の操作の自動化が主なので配列の必要性を感じないかもしれません。
しかし配列をマスターすると、高速化を図ったり、データを一つにまとめておいて一部を取り出すなどプログラミングの自由度が増し、とても便利になります。配列が自由自在に使えるようにイメージをしっかり掴めるように解説していくので、一緒に頑張りましょう。

目次

配列のイメージを掴む

そもそも配列とは

ズバリ、配列とは幾つかの値を入れることができる変数です。
分かりやすいようにアパートをイメージします。イメージは下の図の通りです。

f:id:mutable_yun:20190921114422p:plain
配列のイメージ

0号室から4号室まで5つの部屋があり、それぞれの部屋に値を入れることができます。
一階建てのアパート「ゆん荘」の2号室に「Hello」を入れるといった感じです。

f:id:mutable_yun:20190921115746p:plain
ゆん荘の2号室に「Hello」を入居させたイメージ

アパート名の「ゆん荘」にあたる部分が変数名です。その2号室に「Hello」を代入することで、
ゆん荘(2)の値がHelloとなりました。

イメージはつかめたでしょうか。

配列を実際に作ってみる

それでは実際に配列を作って値を代入するコードを書いてみましょう。

Sub 初めての配列()

    Dim ゆん荘(4) As Variant

End Sub

「ゆん荘」という変数を宣言しました。カッコの中に何号室まで作るかを書きます。
「ゆん荘」に用意する部屋の数ではなく、何号室まで用意するかを書く、というのがミソです。

Variantというのは「様々な値が入る」という意味の変数の型です。VBAで配列を作る時のお約束だと覚えておきましょう。

配列を作るポイントをまとめるとたったの2点です。

  1. カッコをつける
  2. Variantで宣言する

次に2号室に「Hello」を入居させましょう。先ほど宣言した変数の次に「Hello」を入れる分を記述します。

Sub 初めての配列()

    Dim ゆん荘(4) As Variant
    
    ゆん荘(2) = "Hello"
    
End Sub

一行追加しただけです。これで「ゆん荘」の2号室に「Hello」を入居させることができました。

中身を確認する

End Subの前にStop と記述して、ローカルウィンドウで中身を確認してみましょう。

Sub 初めての配列()

    Dim ゆん荘(4) As Variant
    
    ゆん荘(2) = "Hello"
    
    Stop

End Sub

ローカルウィンドウはリボンの表示⇒ローカルウィンドウで表示させることができます。

f:id:mutable_yun:20190921123034p:plain
ローカルウィンドウで配列の中身を表示

確かにHelloが入っていることを確認できました。

使いどころを意識する

配列に限らずプログラミングの勉強に共通して言えることですが、使いどころを意識することが大事です。ここではさらに配列のイメージを括弧するために具体例を挙げたいと思います。先ほどの「ゆん荘」では2号室に「Hello」という文字を入れました。ローカルウィンドウで見ると2号室以外はすべて「Empty」となっています。つまり、空っぽ、空室です。

あと4つの空きがあるということです。この「ゆん荘」はあと4つの値を入れることができます。
当たり前ですか?一つの変数に1つの値を入れて、しかもあと4つ値を入れることができる。

たとえば売上の分析をしたいというようなときに、支店名を0号室、日付を1号室、地域を2号室・・・というように、同じ場面で使うパラメータ(設定に使う値)を一つの変数にまとめておける、ということです。

これはたくさんの変数を宣言するよりも手間も省けますし、コードがすっきりします。

配列のイメージが掴めましたでしょうか。不安な人は何度も図とサンプルコードを見てイメージを膨らませて下さい。実際に自分でコードを書いてみると頭に入ってくると思います。

配列のイメージまとめ

今回の記事の内容をまとめると下記の通りです。

  • 配列は複数の値を入れられる変数
  • アパートのように一つの変数が複数の部屋に区切られているイメージ
  • 部屋には番号が付いている
  • 配列名(番号)でその部屋に格納された値にアクセスしたり、書き込んだりできる

<関連記事>