【Excel VBA】 配列数を動的に変更する

プログラミング
この記事を読んでできること

・行の最後まで、または、列の最後までを動的配列の要素にいれていく。
・行数、または、列数は、事前に指定をしない。

A列に東京23区が記載されています。
区の総数は23区だとわかっていますが、今回は個数がわからないものとします。

動的配列(配列数は指定しない)を準備して、セルA2からA列が空欄になるところまで、配列の要素に格納していきます。

サンプルコード

Sub Sample()

'' 動的配列を準備する
Dim Tokyo() As String

Range("A2").Select

'' A列が空欄になるまで動的配列に要素をいれる
Dim i As Integer
i = 0
Do While ActiveCell.Value <> ""
ReDim Preserve Tokyo(i+1)

Tokyo(i) = ActiveCell.Value
i = i + 1

'' アクティブセルを下方向に1つずらす
ActiveCell.Offset(1,0).Select
Loop

End Sub

解説

一般的に配列はを定義する際は、要素数を指定して宣言します。

Dim 配列名(要素数) As 型

動的配列の場合は、要素数を指定せずに宣言し、要素数を再定義して使います。
サンプルコードの場合、4行目で動的配列を定義し、12行目のReDimで再定義しています。

Dim 配列名() As 型
ReDim 配列名(要素数)

今回ポイントとして、要素数を再定義する際にキーワード[Preserve]を用いています。
Preserveをつけることで、これまでに格納した配列の要素を保持したまま再定義できます。
もしサンプルコードでPreserveをつけない場合は、空の配列が上書きされていき、
最後の要素「目黒区」だけが格納された配列が完成します。

ReDim 配列(要素数)   '' 空の配列を再定義
ReDim Preserve 配列(要素数) '' これまでに格納された要素を保持して再定義

配列の要素は0から始まることに注意してください。
もし「配列(2)」と定義したら、配列の要素は「配列(0)、配列(1)、配列(2)」の3つです。
サンプルコードの13行目では、Tokyo(0)から格納しています。

まとめ

要素数が変わる場合には、動的配列を活用すると便利です。
また、Whileを用いて要素数を定義しないことで、要素数の増減による格納漏れや、
エラーの発生を防ぐことができると思います。

この記事を書いた人

製造業で技術開発職をしています。本業で得た経験を元に、理工系学生さん向けの情報をお届け中。最近勉強を開始した副業の記録も残していきます。誰かの役に立てるブログになりますように!

ろみ@副業勉強中をフォローする↓
プログラミング
\\シェアする//
ろみ@副業勉強中をフォローする↓
ろみのお仕事

コメント

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