LBound と UBound とは?

LBound(ローバウンド):配列の**最小のインデックス(添字)を返す
UBound(アッパーバウンド):配列の
最大のインデックス(添字)**を返す

つまり、配列の範囲(何番目から何番目まであるのか)を知るための関数です。


1. 基本構文

LBound(配列名)
UBound(配列名)

2. 使用例①:固定長配列の場合

Dim nums(1 To 5) As Integer

MsgBox LBound(nums) '結果:1
MsgBox UBound(nums) '結果:5

3. 使用例②:Split関数の結果に使う

Dim fruits() As String
Dim i As Integer

fruits = Split("りんご,バナナ,オレンジ", ",")

For i = LBound(fruits) To UBound(fruits)
MsgBox fruits(i)
Next i

この例では、配列 fruits の添字は 0 ~ 2 になります(Split関数は0から始まる配列を返すため)。


4. なぜ使うの?

  • 配列の範囲が動的(可変)なときに便利
  • ループの開始と終了を自動で決められる
  • Split関数ReDimで変更された配列などに使える

5. 注意点

  • LBound = 0 から始まるとは限らない
     → Dim nums(1 To 10) のように書けば、開始は 1
  • Option Base によってもデフォルトの開始番号が変わる

6. まとめ

関数意味よく使う場面
LBound最小インデックスを取得ループの開始点を決める
UBound最大インデックスを取得ループの終了点を決める

実際のループでの使い方の定番

For i = LBound(arr) To UBound(arr)
'配列の中身を処理
Next i

これを覚えておくだけで、可変長の配列にも柔軟に対応できます!
配列を扱うVBAコードでは、LBoundとUBoundは超重要な基本テクニックです!

コメント

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