01-VBA

Excel VBA の 配列(動的配列)| 現役エンジニア&プログラミングスクール講師

目標

配列(動的配列)を理解して利用できる

配列の概要と利用方法

配列とは

配列とは複数の値を順番に保管することのできるデータ構造です。保管されるひとつひとつのデータの型は共通となります。

動的配列とは

配列には箱の数を「後から変えられないもの」と「後からでも変えられるもの」があります。このうち箱の個数を後から変更できるものを動的配列といいます。(後から変更できないものを静的配列といいます。)静的配列か動的配列かは宣言の仕方によって決まります。

配列の利用方法

配列の利用に重要なステートメント、キーワード、関数

Dimステートメント
ReDimステートメント
Preserveキーワード
Array関数
Variant型
LBound関数
UBound関数
Eraseステートメント

動的配列の利用方法(1)

前の記事で紹介した配列は箱の個数を変更できない静的配列でした。これに対して箱の個数を後からでも変更ができる動的配列についてみていきます。動的配列の宣言は次のようになります。

構文

‘最初の宣言時に箱の個数を指定しません。
Dim 配列変数名() As データ型
‘再宣言のステートメントReDimを利用して個数を指定します。
ReDim 配列変数名(4)

宣言
Dim 配列変数名() As String
ReDim 配列変数名(3)

代入方法
配列変数名(0) = “ひとつめの値”
配列変数名(1) = “ふたつめの値”
配列変数名(2) = “みっつめの値”
配列変数名(3) = “よっつめの値”

更に再宣言
ReDim 配列変数名(4)
再代入
※箱の個数を変更すると、これまで入力した値は失われます。
配列変数名(0) = “ひとつめの値”
配列変数名(1) = “ふたつめの値”
配列変数名(2) = “みっつめの値”
配列変数名(3) = “よっつめの値”
配列変数名(4) = “いつつめの値”

例文

Dim Hairetsu() As String
ReDim Hairetsu(3)
Hairetsu(0) = "あいうえお"
Hairetsu(1) = "かきくけこ"
Hairetsu(2) = "さしすえそ"
Hairetsu(3) = "たちつてと"

'更に変更を行います。
'※箱の個数を変更すると、これまで入力した値は失われます。その為、値を再代入しています。
ReDim Hairetsu(4)
Hairetsu(0) = "あいうえお"
Hairetsu(1) = "かきくけこ"
Hairetsu(2) = "さしすえそ"
Hairetsu(3) = "たちつてと"
Hairetsu(4) = "なにぬねの"

ReDimステートメントで再定義した場合は再度初期化を行う必要があります。
その回避法として利用されるのがPreserveです。

例文

Dim Hairetsu() As String
ReDim Hairetsu(3)
Hairetsu(0) = "あいうえお"
Hairetsu(1) = "かきくけこ"
Hairetsu(2) = "さしすえそ"
Hairetsu(3) = "たちつてと"

ReDim Preserve Hairetsu(4)
Hairetsu(4) = "なにぬねの"

Preserveを利用すると値の再代入をせずに配列の個数を増やすことが出来ます。

動的配列の利用方法(2)

構文①
Dim 配列変数名() As Variant
代入方法
配列変数名 = Array(“ひとつ”,”ふたつ”,”みっつ”,”よっつ”,”いつつ”)

※ArrayはVariant型という型で配列を返すようになっています。

構文
Dim 配列変数名() As Variant
代入方法
配列変数名 = [{“ひとつ”,”ふたつ”,”みっつ”,”よっつ”,”いつつ”}]

※こちらの代入方法でもVariant型という型で配列を返すようになっています。

例文

Dim Hairetsu() As Variant
Hairetsu = Array("ひとつ","ふたつ","みっつ","よっつ","いつつ")

MsgBox Hairetsu(0) & Hairetsu(1) & Hairetsu(2) & Hairetsu(3) & Hairetsu(4)

ArrayはVariant型を返すので格納する配列側もVariant型で宣言します。

Variant型についてはこちらを参考にしてください。

ExcelVBAの変数 (Part.3) バリアント型編 | 現役エンジニア&プログラミングスクール講師ExcelVBAのバリアント型変数の使い方について説明しています...

配列で利用する関数

LBound…配列の最小の添え字番号を取得
利用方法
LBound(配列変数名)

UBound…配列の最大の添え字番号を取得
利用方法
UBound(配列変数名)

Erase…静的配列の中身を初期化します。動的配列の使用中メモリを解放します。
利用方法
Erase 配列名
静的配列の場合は値が次の表のように初期化されるので実行時エラーにはなりませんが、動的配列の場合は使用中メモリが解放される(配列がなくなる)ためErase後の呼び出しは実行時エラーとなります。

静的配列の場合は利用されている型によって初期化後の値が変わります。

配列の型Erase後の値
Integer,Long,Currency
など数字に関するもの
0
String“”
ObjectNothing
VariantEmpty

LBound関数、UBound関数、Eraseステートメントの利用方法については次の記事のサンプルプロシージャで確認してください。

今回は以上となります。

初心者も実践で通用!「VBA・VBS」おすすめ書籍5選 | 現役エンジニア&プログラミングスクール講師「VBA・VBS」初心者の方が実践業務の中でそれらを活用しt活躍できるために必要な知識を習得できる書籍を紹介しています。ページの下部には「おすすめのITスクール情報」「おすすめ求人サイト」について情報を掲載中。...

ブックマークのすすめ

「ほわほわぶろぐ」を常に検索するのが面倒だという方はブックマークをお勧めします。ブックマークの設定は別記事にて掲載しています。

「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】| 現役エンジニア&プログラミングスクール講師「お気に入り」の登録・削除方法【Google Chrome / Microsoft Edge】について解説している記事です。削除方法も掲載しています。...
【パソコン選び】失敗しないための重要ポイント | 現役エンジニア&プログラミングスクール講師【パソコン選び】失敗しないための重要ポイントについての記事です。パソコンのタイプと購入時に検討すべき点・家電量販店で見かけるCPUの見方・購入者が必要とするメモリ容量・HDDとSSDについて・ディスプレイの種類・バッテリーの持ち時間や保証・Officeソフト・ウィルス対策ソフトについて書いています。...
RELATED POST
01-VBA

演算子|Excel VBA (Part.7)【その他の演算子】Is演算子 | 現役エンジニア&プログラミングスクール講師

2022年11月1日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
01-VBA

Excel VBA の エラー処理(Part.1)| 現役エンジニア&プログラミングスクール講師

2022年12月26日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
01-VBA

VBScriptを利用したVBAプロシージャの呼び出し(Part.1)| 現役エンジニア&プログラミングスクール講師

2023年2月14日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
01-VBA

Excel VBA の ユーザーフォーム編(Part.1~Part.17)システム作成 | 現役エンジニア&プログラミングスクール講師

2024年1月19日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
01-VBA

Excel VBA の「オブジェクト活用」(Part.1)【ワークシートと行列の活用編】| 現役エンジニア&プログラミングスクール講師

2022年12月14日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
01-VBA

クラスの利用方法|Excel VBA (Part.1) | 現役エンジニア&プログラミングスクール講師

2023年2月17日
プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site