教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

ExcelVBAでUBound関数の使い方

構文

構文は以下の通りです。

UBound(配列, [次元])

解説

UBound関数は、配列の指定された次元の上限(最も大きいインデックス)を返す関数です。配列は、上限を知りたい配列を指定します。次元 (省略可能)は、多次元配列の場合、どの次元の上限を知りたいかを指定します。省略すると、1次元目の上限が返されます。

プログラミング例

具体的なプログラミング例を紹介します。

(例1)一次元配列の場合

Sub 一次元配列の上限を取得()
    Dim 果物(1 To 5) As String
    果物(1) = "りんご"
    果物(2) = "バナナ"
    果物(3) = "みかん"
    果物(4) = "ぶどう"
    果物(5) = "もも"
    Dim 上限 As Integer
    上限 = UBound(果物)
    MsgBox "一次元配列の上限は " & 上限 & " です。"
End Sub

上記のプログラムは、果物という名前の配列を作成し、1から5までの範囲で5つの要素を持たせています。UBound関数を使用して、配列の上限を取得し、上限という変数に格納します。最後に、MsgBoxで配列の上限を表示します。この場合、結果は「5」となります。

(例2)二次元配列の場合

Sub 二次元配列の上限を取得()
    Dim 教科(1 To 3, 1 To 4) As String
    教科(1, 1) = "国語"
    教科(1, 2) = "算数"
    教科(1, 3) = "理科"
    教科(1, 4) = "社会"
    教科(2, 1) = "英語"
    教科(2, 2) = "音楽"
    教科(2, 3) = "体育"
    教科(2, 4) = "図工"
    教科(3, 1) = "家庭科"
    教科(3, 2) = "道徳"
    教科(3, 3) = "総合"
    教科(3, 4) = "選択"
    Dim 上限1次元目 As Integer
    Dim 上限2次元目 As Integer
    上限1次元目 = UBound(教科, 1)
    上限2次元目 = UBound(教科, 2)
    MsgBox "1次元目の上限は " & 上限1次元目 & " です。" & vbCrLf & _
           "2次元目の上限は " & 上限2次元目 & " です。"
End Sub

上記のプログラムは、教科という名前の二次元配列を作成し、3行4列の範囲で教科名を設定しています。UBound関数を使用して、1次元目(行数)と2次元目(列数)の上限をそれぞれ取得します。最後に、MsgBoxでそれぞれの次元の上限を表示します。この場合、結果は「1次元目の上限は3、2次元目の上限は4」となります。

まとめ

UBound関数は配列の指定された次元の上限を取得するために使用します。基本的な構文は簡単で、単一次元の配列に対しても、多次元の配列に対しても利用可能です。