VB6・VBA関数メモ:UBound関数

UBound関数についてメモしておきます。
UBound関数は配列の最大要素の添字を取得する際に使用します。
間違いやすいですが、配列の要素数を取得する関数ではないので注意です。

また、割と知らない人が多いようですが、第2引数のdimensionに配列の次元を指定できます。
多次元配列で使用する際には指定する必要があります。

なお、配列の要素数が0の場合はエラーとなる為、別途関数を作るかエラー処理を書く必要があります。


概要

UBound(arrayname, [dimension])
機能 対象配列の最大要素の添字を返す
戻り値 最大要素の添字


引数

引数名説明
arrayname 対象となる配列
※要素数0の配列だとエラー
dimension (省略可)
最大要素の添字を取得する配列の次元
省略時は「1」
※「0」以下を指定するとエラー


使用例

説明記述例出力
配列の最大要素の添字を取得
Dim datas(5) As String
Debug.Print UBound(datas)
5
※配列の要素数ではなく
 最大要素の添字なので注意
Dim datas(2 To 5) As String
Debug.Print UBound(datas)
5
配列の2次元目の要素数を取得
Dim datas(5, 10) As String
Debug.Print UBound(datas, 2)
10
3次元配列のループ
Dim i As Long
Dim j As Long
Dim k As Long

Dim datas(5, 10, 15) As String

For i = LBound(datas, 1) To UBound(datas, 1)
    For j = LBound(datas, 2) To UBound(datas, 2)
        For k = LBound(datas, 3) To UBound(datas, 3)
            Debug.Print datas(i, j, k)
        Next k
    Next j
Next i
(略)
要素数が0の場合でもエラーを
出さないようにする
(独自に関数作成)
'UBound関数と同じ処理を行う
'※エラーの場合は-1を返す
Function UBound2(arrayname, Optional dimension = 1) As Long
On Error GoTo ErrHandler

    UBound2 = UBound(arrayname, dimension)

    Exit Function
ErrHandler:
    'エラーの場合
    UBound2 = -1
End Function



Dim datas() As String
Debug.Print UBound2(datas)
-1


コメント
コメントする








    
この記事のトラックバックURL
トラックバック