Excelマクロの配列を学習してみるもののいまいち理解できない・よくわからない点について

Excelのマクロで配列の学習をしているのですが、ネットや書籍を読んでみてもいまいちスッキリしないというか、わからないことがあるので備忘録として記事にしておきます。

目次

配列の書き方は変数宣言の時に()の中に数値をいれるのか、arrayでやるのかどっちがいいのかわからない。

Excelマクロで配列を定義するやりかたに

  1. 変数宣言時に括弧のなかに要素数を指定して配列を定義するやりかたと
  2. array関数?を使って配列を定義するやりかた


があるのですが、どちらをつかえばいいのかよくわかりません。

配列の括弧の中に数値をいれるやりかた


試しに変数宣言の時に括弧の中に配列数を指定するやり方でマクロを作ってみました。

配列の要素は「0」から始まるというルールがあるので「my_array(4)」とすることで要素数が「5」の配列を宣言することができます。

Sub hairetu1()

'■変数宣言

Dim my_array(4) As Variant
Dim i As Long

my_array(0) = "現金"
my_array(1) = "普通預金"
my_array(2) = "当座預金"
my_array(3) = "定期預金"
my_array(4) = "定期積金"


'■処理実行部分

For i = LBound(my_array) To UBound(my_array)

   Cells(1, i + 1).Value = my_array(i)

Next i


End Sub

このやりかたのポイントは配列の変数を宣言したあとに配列の各要素に格納するデータを追加していく必要があるということ。

あとforステートメントで繰り返しの処理を実行するときにLboundとUboundを使うと「最初の要素」から「最後の要素」まで繰り返すことができるようになります。

今回の場合は変数「i」を0から4まで変化させることになります。

変数「i」が0から始まるので実際にExcelのセルに数値を入力する時には19行目ハイライト行のように「i+1」としてあげないとエラーになります。

というのもExcelのセルで0を使って場所を指定することはないからです。
A1セルは存在しますが、A0セルは存在しないのでエラーになるということです。

上のマクロを実行するとこうなります↓

array関数を使用して配列を定義するやりかた

で、もう一つのやり方でarray関数?を使用してマクロを書くとこういう感じになります↓

Sub hairetu2()

'■変数宣言

Dim my_array As Variant
Dim i As Long

my_array = Array("現金", "普通預金", "当座預金", "定期預金", "定期積金")

'■処理実行部分

For i = LBound(my_array) To UBound(my_array)

   Cells(1, i + 1).Value = my_array(i)

Next i


End Sub


さきほどのマクロと違う点は変数を宣言するときに括弧を書かなくてよい。variant型で宣言すればいい点。

その後でその変数に対してarray関数で配列を定義していく流れになります。8行目のハイライト部分がそれになります。

このマクロを実行するとさきほどと全く同じ結果になります↓


同じ結果になるんですが、どんなケースの時にどっちの書き方を書くのがよいのか、その判断基準がまったくわかりません。

arrayで書く方が要素の数が多くなったときに「多少」書きやすいかな・わかりやすいかなという感じです。

まとめ

Excelマクロで配列の学習をした際によくわからない点を記事にしました。これ以外にも配列に関しては「?」となることが頻発します。

こういう時に独学の限界を痛感します。この理解であっているのか、それとも間違っているのかがわからないからです。

正直、税理士業務におけるExcelマクロで配列をつかわないとどうしようもない場面に(自分は)でくわしたことがないので、このスキル(配列に対する理解)要るか?と思わなくもないのですが、脱初心者を目指してやってみている次第です。




【本日の近況報告】

マイナンバーカードを健康保険証として利用するための設定をマイナポータルで実施。
数回のクリックで登録まで完了しました。
マイナンバーカードを健康保険証として使用するかどうかはわかりませんが。。。

【本日の1曲】

franz ferdinand/billy goodbye

先日フランツフェルディナンドの新曲がラジオから流れてきました。
まだ活動してたのかって感じですが、曲聴くと「あ~フランツっぽいな」となります。

ダンスできるロックといいますか。初期の曲に「take me out」って曲がありますが、最初はあんまり好きになれなかったんですよね。もっと早くて直球な感じの音楽が当時は好みで。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次