本ページには広告が含まれています。

ExcelVBA UBound関数 配列の最大インデックスを返す

ExcelVBA UBound関数 配列の最大インデックスを返す

Excel VBAの「UBound 関数」について解説します。

スポンサーリンク

Join 関数とは

Excel VBA の UBound 関数は、指定された次元の配列で使用できるインデックス番号の最大値を返します。

UBound 関数は、配列を正しい最大値までループしたいときに使用する関数です。ループ処理する際は、配列の最小インデックスを取得する LBound 関数を併用します。

UBound 関数の構文や引数の設定と実際の使い方について具体的に解説していきたいと思います。

UBound 関数(Visual Basic for Applications リファレンス)

構文(引数と戻り値)

Excel VBAの関数を使いこなすには、関数の構文を正しく理解しておくことが重要です。

構文

UBound(arrayname[, dimension])

引数

引数 説明
sourcearray【必須】配列の名前を指定します
delimiter【省略可能】対象とする配列の次元を指定します
※ 省略時は (1) 一次元が指定されたとみなされます

※ 配列のインデックス (添え字) とは、配列内の特定の要素を示すために使用される番号のことです。

戻り値

戻り値説明
数値
(Long)
最大のインデックス番号を表す数値 (Long) を返します

解説(使用例)

UBound 関数の使い方をサンプルで確認していきましょう。

UBound 関数サンプル (基本的な使用例)

配列の最大インデックスを調べるサンプルを二つ紹介します。

一次元配列からの取得例

'■UBound関数サンプル1(1次元配列の取得例)
Sub UBound_Sample01()
  Dim var As Variant
  Dim maxId As Long
  
  var = Array(1, 2, 3, 4, 5)
  maxId = UBound(var)
  
  Debug.Print "配列の最大インデックス " & maxId ' 出力: 4

End Sub

これを実行したイミディエイトがこちらです。

UBound_Sample01 実行時のイミディエイト画像

Array 関数で作成した配列のインデックスは スタートです。

dimension は省略しています。省略時の既定は 1 (1次元目)です。

多次元配列からの取得例

'■UBound関数サンプル2(多次元配列の取得例)
Sub UBound_Sample02()
  Dim matrix(1 To 3, 2 To 4) As String '2次元の配列宣言
  Dim maxId1 As Long
  Dim maxId2 As Long
    
  maxId1 = UBound(matrix, 1) ' 1次元の最大インデックス
  maxId2 = UBound(matrix, 2) ' 2次元の最大インデックス
  
  Debug.Print "1次元の最大インデックス " & maxId1 ' 出力: 3
  Debug.Print "2次元の最大インデックス " & maxId2 ' 出力: 4

End Sub

これを実行したイミディエイトがこちらです。

UBound_Sample02 実行時のイミディエイト画像

・はじめに2次元配列の変数を宣言しています。

dimension で次元数を指定しています。 1 = 1次元目、 = 2次元目、 = 3次元目 ・・・です。

参考記事

次の記事にもサンプルがあります。是非ご覧ください。

おわりに

Excel VBA の UBound 関数は、配列の最大インデックスを取得するための便利な関数です。

特に多次元配列や、動的に変化する配列のループ処理において Lbound 関数と組み合わせて使うのが必須と言ってよいでしょう。使い方をマスターすることで、より柔軟なVBAコードが書けるようになると思います。

以上、この解説が少しでもみなさまのお役に立てたなら幸いです(^^;

VBAの関数一覧はこちらからご参照ください。

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

VBAサンプルファイルダウンロードページのご案内

このページで使用したサンプルファイルの登録はありません(^^;
ページ内のコードをコピーしてご利用ください。

ダウンロードページへのリンクは下のカードクリックでジャンプできます。
よろしければご利用ください!