トップ > 資格を活かすには > やってみよう!Excel VBAで業務改善! > 揺るぎない力編: 第31話「八木くんの回答」2/4 :LBound関数とUBound関数

やってみよう!Excel VBAで業務改善! 新たなる挑戦編|第31話 「八木くんの回答」

LBound関数とUBound関数

【書式】  LBound(配列)
      UBound(配列)

Sub Sample1()
    Dim tmp(3) As String
    tmp(1) = "tanaka"
    tmp(2) = "suzuki"
    MsgBox LBound(tmp) & "から" & UBound(tmp)
End Sub

上記のコードは、tmp(0)からtmp(3)まで4つの要素を持つ配列変数「tmp」を宣言し、配列内の
「tmp(1)」と「tmp(2)」にデータを格納しています。データの有無によらず、配列変数「tmp」
で使用できる最小のインデックス番号は0であり、最大のインデックス番号は3です。

                                                    < スタンダード公式テキスト P98 >

「えっと、それはですね…。
あ、次のページ見てください」
岬さんはテキストの、次のページのサンプルコードを指さしました。

Sub Sample2()
    Dim tmp As Variant, i As Long
    tmp = Split("tanaka/suzuki/yamada", "/")
    For i = 0 To UBound(tmp)
        MsgBox tmp(i)
    Next i
End Sub

                                                    < スタンダード公式テキスト P99 >

「コードの4行目のFor…Nextステートメント、カウンタ変数iの終了値に、
UBound関数で取得したインデックス番号の最大値を使用してますよね。
…こんな感じで、For i = LBound(tmp) To UBound(tmp)…と指定すれば、
配列の最小値から最大値まで、簡単に繰り返し処理が行えるんですよ」
「ふ~~~ん。便利じゃない。
…でもこれって、こないだのFor Each…Nextステートメントでも、同じことができるわよね」
「あ、はい。そうですね」 岬さんが、"すごい"という顔をして泉先輩を見つめます。
泉先輩は、コーヒーをズズーッと飲み干しました。

一覧にもどる