こんにちは、Ryoですvば
1.サンプル概要
一例としてデータ数10個の簡易的な表を作成していますので、このデータを読み込んで配列に格納し、その要素数と下限値・上限値を表示します。
処理結果はメッセージボックスで表示し以下の通りとなります。
2.サンプルコード
'配列のインデックス番号最小値を1とする Option Base 1 Sub Sample1() Dim tmp() As Variant Dim num As Long 'A列のデータ件数を求める(表題部分は-1とする) num = Range("A1").CurrentRegion.Rows.Count - 1 '得られたデータ数=配列要素数として決定する ReDim tmp(num) '配列の「要素数」「下限値」「上限値」をメッセージボックスで表示 MsgBox "要素数: " & UBound(tmp) - LBound(tmp) + 1 & vbLf _ & "下限値: " & LBound(tmp) & vbLf _ & "上限値: " & UBound(tmp) End Sub
今回は配列要素数を取得するサンプルなので、配列のインデックス番号の最小値を「1」にするOption Baseステートメントを利用し、その後の処理でUBound関数、LBound関数を利用して要素数を取得しています。
構文:Option Baseステートメント
Option Base 0/1
構文:UBound関数/LBound関数
UBound/LBound(arrayname[, dimension])
Option Baseステートメントを利用して配列インデックス番号の開始値を「1」とし、配列の要素数を「UBound関数結果-LBound関数結果+1」で求めています。
あとはそれぞれLBound関数結果=下限値、UBound関数結果=上限値としてメッセージボックスで表示しています。
3.まとめ
データ集計などの処理を行う中で配列を扱うことは多々ありますから、要素数を求める手段を知っておくことは有用と思います。
UBound/LBound関数の引数dimensionは下限値(上限値)を調べる配列の次元数を指定できるもの(省略は1)ですので、2次元配列の利用でも活用できますから機会があればご活用ください。
以上、配列要素数の取得についてでした!今回の記事が何かの参考になれざ幸いです。
Ryo