UBound関数:配列の最大インデックスを取得する

UBound 関数は Excel VBA で用意されている関数の一つで、引数に指定した配列の最大インデックスを取得します。配列に複数の次元がある場合は次元を指定して取得できます。ここでは Excel VBA における UBound 関数の使い方について解説します。

※ 配列の最小インデックスを取得するには LBound 関数を使用します。詳しくは「LBound関数:配列の最小インデックスを取得する」を参照されてください。

(Last modified: )

UBound関数の定義と使い方

UBound 関数は引数に指定した配列の最大インデックスを返します。

UBound(arrayname)

1 番目の引数に配列を指定します。戻り値として配列の最大インデックスを返します。

次の例を見てください。

Dim str(2) As String
Dim num(3 To 6) As Integer

Debug.Print UBound(str)  '2
Debug.Print UBound(num)  '6

要素数だけを指定して配列を作成した場合は、最大インデックスは配列の引数に指定した値となります。インデックス範囲を指定した配列を作成した場合、最大インデックスは指定したインデックスの最大値の値になります。

多次元配列の場合

配列が多次元配列の場合、どの次元の最大インデックスを取得するのかは UBound 関数の省略可能な 2 番目の引数で指定します。最初の次元を指定する場合は 1 、次の次元は 2 と続いていきます。

次の例を見てください。

Dim v(5, 1 To 3) As Integer

Debug.Print UBound(v, 1)  '5
Debug.Print UBound(v, 2)  '3

2 次元の配列を 1 番目の引数に指定しました。 2 番目の引数で次元を指定しそれぞれ最大インデックスを取得します。多次元配列の場合も要素数だけを指定した場合の最大インデックスは配列の引数に指定した値 で、インデックス範囲を指定した場合は最大インデックスはインデックスの最大値となります。

サンプルコード

それでは簡単なサンプルを作成して試してみます。

Option Explicit

Sub UBound関数()
    Dim str(2) As String
    Dim num(3 To 6) As Integer
    Dim v(5, 1 To 3) As Integer

    Debug.Print UBound(str)
    Debug.Print UBound(num)
    Debug.Print UBound(v, 1)
    Debug.Print UBound(v, 2)
End Sub

UBound関数の定義と使い方(1)

このプログラムを実行すると UBound 関数を使って変数に指定した配列の最大インデックスを取得します。

UBound関数の定義と使い方(2)

-- --

Excel VBA における UBound 関数の使い方について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。