【ExcelVBA・マクロ】UBound関数の使い方|配列の最大要素番号を取得する方法【コピペOK】

UBound関数の使い方 ExcelVBA

VBAで配列を扱っていると、次のようなことはありませんか?

  • 配列の最後の要素番号を知りたい
  • For文で配列を最後まで処理したい
  • 配列サイズが分からない状態でループしたい

このような場合は、UBound関数を使うことで解決できます。
配列の上限(最大インデックス番号)を取得できる便利な関数です。

この記事では、UBound関数の基本から実務での活用方法まで分かりやすく解説します。


スポンサーリンク
スポンサーリンク

この記事でできること

  • 配列の最大要素番号を取得できる
  • 配列を安全にループできる
  • 多次元配列にも対応できる

UBound関数とは?

UBound(Upper Bound)は、配列の上限番号を返す関数です。

例えば次の配列の場合、

Dim arr(5) As String

要素番号は次のようになります。


0
1
2
3
4
5

UBound(arr) の結果は「5」になります。


基本:UBound関数の使い方

基本構文はこちらです。

UBound(配列)

基本例

Dim arr(5) As String

MsgBox UBound(arr)

→ 5


配列をループ処理する

UBoundはFor文と組み合わせて使うことが多いです。

Dim arr(5) As String
Dim i As Long

For i = 0 To UBound(arr)

    arr(i) = "データ" & i

Next i

LBoundと組み合わせる(おすすめ)

配列の開始位置が不明な場合はLBoundとセットで使用します。

Dim i As Long

For i = LBound(arr) To UBound(arr)

    Debug.Print arr(i)

Next i

動的配列で使う

Dim arr() As String

ReDim arr(10)

MsgBox UBound(arr)

→ 10


多次元配列で使う

第2引数で次元を指定できます。

Dim arr(2, 3) As String

MsgBox UBound(arr, 1)

→ 2

MsgBox UBound(arr, 2)

→ 3


配列の要素数を取得する

要素数は次のように取得できます。

Dim cnt As Long

cnt = UBound(arr) - LBound(arr) + 1

MsgBox cnt

Split関数と組み合わせる

文字列を分割した配列の件数確認によく使います。

Dim arr

arr = Split("A,B,C,D", ",")

MsgBox UBound(arr)

→ 3


実務での活用例

  • CSVデータ処理
  • 配列ループ
  • データ集計
  • 動的配列管理

配列処理では必須レベルの関数です。


注意点

① 要素数ではない

UBoundは最大インデックス番号です。

Dim arr(5)

要素数は6です。


② 初期化されていない動的配列はエラー

Dim arr()

MsgBox UBound(arr)

→ エラー


③ Option Baseに注意

開始番号が変わる場合があります。

Option Base 1

安全な書き方(おすすめ)

Dim arr As Variant

arr = Split("A,B,C", ",")

If IsArray(arr) Then

    Dim i As Long

    For i = LBound(arr) To UBound(arr)

        Debug.Print arr(i)

    Next i

End If

よくあるエラーと対処法

① インデックスが範囲外です

UBoundを超えてアクセスしている可能性があります。

② 配列が初期化されていない

ReDim後に使用してください。

③ 要素数が合わない

UBoundは最大番号であり件数ではありません。

④ コードは正しいのにエラーになる

コピー時に全角文字や特殊文字が混ざることがあります。
その場合は該当行を手入力し直すと解決することがあります。


まとめ

  • UBoundは配列の最大要素番号を取得する関数
  • For文との組み合わせが基本
  • LBoundとセットで使うのがおすすめ
  • 配列処理では必須レベルの関数

UBound関数を使いこなせるようになると、配列処理が格段に楽になります。
VBAで配列を扱うなら必ず覚えておきたい重要関数です。

スポンサーリンク
スポンサーリンク
ExcelVBA
いがぴをフォローする

コメント

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