- 公開日:2017-3-5 最終更新日:2017-2-28
- プロナビTOP / プログラミング初心者向け技術系ノウハウ・まとめ

VBAの配列の要素数を扱う方法についてご説明します。
配列は複数の値を扱うことができ、それぞれの値は配列の要素として扱われます。
そして配列をコード内で効率的に操作するために要素数について理解を深めることは非常に重要です。
以下、詳しく解説致します。
配列と要素数を定義
構文
1 |
Dim 配列名(要素数) As 型 |
配列の定義の仕方は通常の変数と非常によく似ていますが、()内に要素数を定義することができます。
なお要素数は0から始まり、指定した数までのの連番が振られている点に注意しましょう。
<コード①>
1 2 3 4 5 6 7 8 9 10 |
Dim myNo(3) As Integer '数値型の配列を定義’ '各要素に値を格納’ myNo(0) = 1 myNo(1) = 2 myNo(2) = 3 myNo(3) = 4 なお、指定した要素数以上の要素を指定するとエラーが発生します。 <コード②>(コード①の後に追記) myNo(4) = 5 ‘定義した要素数以上の要素を指定‘ |
<実行例>
要素数の最大値・最小値
配列の要素数の最大値はUbound(配列名)で、最小値はLbound(配列名)で求めることができます。
1 2 3 |
<コード③>(コード①の後に追記) MsgBox "要素の最大値:" & UBound(myNo) & vbCrLf & _ "要素の最小値:" & LBound(myNo) |
<実行例>
これらの関数はループ処理で配列を一気に処理する場合に役立ちます。
ループ処理の先頭に要素数を直接入力してももちろんコードは正しく動作しますが、
要素数が変更された場合ループ処理の部分まで修正を行う必要があります。
しかし、関数で要素の最大値・最小値を取得することによりコードに変更が発生した場合の
修正箇所を少なくすることができるというメリットがあります。
<コード④:要素数を直接入力してループ処理を行った場合>
1 2 3 4 5 6 7 |
Dim myNo(3) As Integer '数値型の配列を定義' Dim i As Integer 'ループ処理用の変数' 'ループ処理で各要素に値を格納' For i = 0 To 3 myNo(i) = i + 1 Next i |
<コード⑤:コード④の要素数を変更した場合>
1 2 3 4 5 6 7 |
Dim myNo(5) As Integer '数値型の配列を定義' Dim i As Integer 'ループ処理用の変数' 'ループ処理で各要素に値を格納' For i = 0 To 5 myNo(i) = i + 1 Next i |
<コード⑥:要素の最大値・最小値を関数で取得してループ処理を行った場合>
1 2 3 4 5 6 7 |
Dim myNo(3) As Integer '数値型の配列を定義' Dim i As Integer 'ループ処理用の変数' 'ループ処理で各要素に値を格納' For i = LBound(myNo) To UBound(myNo) myNo(i) = i + 1 Next i |
要素数を1から開始する方法
デフォルトの設定では配列の要素数は0から始まりますが、データの内容によっては
1から要素数を開始した方が都合が良い場合もあります。
そういう場合はモジュールの先頭にOption Base 1と指定することで
要素数を1からスタートすることができます。
<コード>
1 2 3 4 5 6 7 |
Option Base 1 Sub Hairetu_Youso() Dim myNo(3) As Integer '数値型の配列を定義' MsgBox "要素の最大値:" & UBound(myNo) & vbCrLf & _ "要素の最小値:" & LBound(myNo) End Sub |
<実行例>
ちなみに、配列のスタート値として設定できる値は0または1のみです。
まとめ
配列は複数のデータをまとめて処理することができます。
その際、要素数を適切に設定・取得することが配列を効果的に操作する上でのポイントとなります。
配列を使用すると大量のデータを短時間で処理することが可能となるので
ぜひ取り入れてみてください。