【Excel VBA】配列の要素数を取得する(UBound)の基本コードとやさしい解説

VBA & Excel
スポンサーリンク
スポンサーリンク

はじめに

VBAで配列を扱っていると、
「この配列はいくつの要素を持っているんだろう?」
「ループするときに上限を知りたい」
そんな場面がよくあります。

そこで役立つのが UBound 関数 です。

ここでは、UBound の基本の使い方と、
実務で役立つ書き方を解説します。

まずはコードを確認

Dim arr As Variant
arr = Array("A", "B", "C")

MsgBox UBound(arr)

結果は 2。
配列の「最大インデックス」を返します。

UBound の基本

配列の上限(最大インデックス)を取得する

UBound(配列)

配列は 0 から始まる ため、
要素数とは少し違う点に注意が必要です。

要素数を取得する方法

要素数 = UBound + 1

Dim count As Long
count = UBound(arr) + 1

配列の要素数を知りたいときは、
UBound + 1 が基本です。

具体的な例で理解する

Split と組み合わせて要素数を調べる

Dim arr As Variant
arr = Split("A,B,C,D", ",")

MsgBox "要素数:" & UBound(arr) + 1

CSVのような文字列を扱うときに便利です。

配列をループするときに使う

Dim i As Long
For i = 0 To UBound(arr)
Debug.Print arr(i)
Next i

配列の長さが変わっても安全にループできます。

動的配列のサイズを調べる

Dim arr() As Long
ReDim arr(5)

MsgBox UBound(arr) '5

ReDim した配列でも UBound は使えます。

LBound と組み合わせる

配列の下限(通常は 0)を取得する

LBound(arr)

上限と下限を使ってループする

Dim i As Long
For i = LBound(arr) To UBound(arr)
Debug.Print arr(i)
Next i

配列の開始位置が変わる可能性がある場合に安心です。

注意点(実務で気をつけたいこと)

空の配列に UBound を使うとエラー

→ 配列が空かどうかを事前にチェックすると安全です。

If Not IsEmpty(arr) Then
MsgBox UBound(arr)
End If

Variant 型でないと Split の結果を受け取れない

→ Split の戻り値は配列なので Variant が基本です。

配列の要素数と UBound は違う

→ 要素数 = UBound + 1 を忘れないように。

応用:配列が空かどうかを判定する関数

Function IsArrayEmpty(arr As Variant) As Boolean
On Error GoTo ErrHandler
IsArrayEmpty = (UBound(arr) < LBound(arr))
Exit Function
ErrHandler:
IsArrayEmpty = True
End Function

実務でよく使う“安全な配列チェック”です。

まとめ

  • UBound は配列の「最大インデックス」を返す
  • 要素数を知りたいときは UBound + 1
  • Split と組み合わせると文字列処理が強くなる
  • LBound と合わせて使うと安全
  • 空配列への UBound はエラーになるため注意

UBound は、配列を“やさしく扱う”ための静かな相棒です。


decopon
decopon

配列の長さを知ることは、データを扱ううえでとても大切です。
UBound は、そんな配列の“輪郭”をそっと教えてくれる存在です。

moco
moco

配列の大きさがわかると、ループも安心して回せるね。
VBAは、こういう小さな気配りも得意なんだなあ。

コメント

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