Mutable_Yunの業務改善ブログ

業務改善や生産性向上のブログです。自動化の手段として、VBAやRPAの勉強に役立つ解説をしています。

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

VBAを使い初めてしばらくはシート上の操作の自動化が主なので配列の必要性を感じないかもしれません。
しかし配列をマスターすると、高速化を図ったり、データを一つにまとめておいて一部を取り出すなどプログラミングの自由度が増し、とても便利になります。ワークシートと違い、書き込んだ値がそのままでは目に見えないのでイメージしづらいかもしれませんが、しっかりイメージすることができれば配列とお友達になることができます。

この機会に配列をマスターして上級の仲間入りを果たしましょう。

この記事は中級です。
レベルについてはExcel 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 と記述して、ローカルウィンドウで中身を確認してみましょう。
ローカルウィンドウはリボンの表示⇒ローカルウィンドウで表示させることができます。

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

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

使いどころを意識する

配列に限らずプログラミングの勉強に共通して言えることですが、使いどころを意識することが大事です。(本当は、やりたいことがあってその方法がわからないので調べる、というのが一番勉強になります。初めのうちは自分の業務が自動化できるかどうか言う事すら分からないので、発想の幅を広げる意味で、配列というのがある、○○というのがあるという知識を広げていくのは有効です。つまり、あなたがこのブログを読んでいるのは正しい方向性だと思います。)

ここではさらに配列のイメージを括弧するために具体例を挙げたいと思います。

先ほどの「ゆん荘」では2号室に「Hello」という文字を入れました。ローカルウィンドウで見ると2号室以外はすべて「Empty」となっています。つまり、空っぽ、空室です。

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

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

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

配列の使いどころがわかりましたでしょうか。
今回はイメージをつかむことが目的でした。

全10回でしっかり使いこなせるように引き続き解説していきます。