【ExcelVBA・マクロ】LBoundの使い方|配列の開始位置を取得する方法【コピペOK】

LBoundの使い方 ExcelVBA

VBAで配列を扱っていると、次のようなことはありませんか?

  • 配列の開始位置が分からない
  • ループ処理でエラーになる
  • 安全に配列を処理したい

このような場合は、LBound関数を使うことで解決できます。
配列の「最初のインデックス(開始位置)」を取得できる関数です。

この記事では、LBoundの基本から実務での使い方まで分かりやすく解説します。


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

この記事でできること

  • 配列の開始位置を取得できる
  • 安全なループ処理が書ける
  • Uboundとの組み合わせが分かる

基本:LBoundの使い方

基本構文はこちらです。

LBound(配列, [次元])

例:

Dim arr(1 To 5) As Long

MsgBox LBound(arr)

→ 1(配列の開始位置)


LBoundとは?

配列の最初の要素の番号(インデックス)を取得します。

  • 1始まり → 1
  • 0始まり → 0

基本例:配列のループ処理

Option Explicit

Sub LoopArray()

    Dim arr(1 To 5) As Long
    Dim i As Long

    For i = LBound(arr) To UBound(arr)
        arr(i) = i * 10
        Debug.Print arr(i)
    Next i

End Sub

安全に配列を処理できます。


Uboundとの組み合わせ(重要)

LBoundとセットで使うのが基本です。

For i = LBound(arr) To UBound(arr)

これにより、配列サイズが変わっても対応できます。


0始まり配列の例

Dim arr(0 To 4) As Long

MsgBox LBound(arr)  ' → 0

配列によって開始位置が異なるため注意が必要です。


配列(Array関数)の場合

Dim arr

arr = Array("A", "B", "C")

MsgBox LBound(arr)  ' → 0

Array関数は0始まりです。


2次元配列のLBound

次元を指定することもできます。

Dim arr(1 To 3, 1 To 2) As Long

MsgBox LBound(arr, 1) ' 行
MsgBox LBound(arr, 2) ' 列

セル範囲を配列として扱う場合

Dim arr As Variant

arr = Range("A1:B3").Value

MsgBox LBound(arr, 1) ' 行
MsgBox LBound(arr, 2) ' 列

通常は1始まりになります。


実務での活用例

  • 配列ループ処理
  • データ処理の安全化
  • 可変配列対応
  • Excelデータの一括処理

配列処理では必須の関数です。


よくあるエラーと対処法

① 配列範囲外エラー

LBoundとUboundを使ってループしてください。

② 0始まりと1始まりの混乱

配列の種類によって変わるので確認が必要です。

③ 次元指定ミス

2次元配列では次元を指定してください。

④ コードは正しいのにエラーになる

コピー時に全角文字や特殊文字が混ざることがあります。
その場合は該当行を手入力し直すと解決することがあります。


まとめ

  • LBoundは配列の開始位置を取得
  • Uboundとセットで使う
  • 0始まり・1始まりに注意
  • 配列処理の基本関数

LBoundを使いこなせるようになると、配列処理の安全性と柔軟性が大きく向上します。
VBAでは頻出の関数なので、必ずマスターしておきましょう。

スポンサーリンク
スポンサーリンク
ExcelVBA
いがぴをフォローする

コメント

タイトルとURLをコピーしました