「VBAで配列の要素数を簡単に取得したいけど、どうやるんだろう?」
このように悩んだことはありませんか?

・配列の要素数を確認したいけど、どうやって計算すればいいの?
・2次元配列の行や列のサイズを簡単に取得したい。
・配列の要素を削除・追加する方法も知りたい。



その場合は、VBAの「Ubound ・ Lbound」を
使用すると解決します!
この記事では、Excel VBAの「Ubound」「Lbound」関数を使って配列のサイズを取得する方法について詳しく説明します。
これらの関数を使えば、配列の要素数を簡単に取得できるだけでなく、2次元配列や動的配列の扱いもスムーズに行えます。
さらに、配列に要素を追加・削除する方法についても解説し、業務効率を向上させるテクニックを紹介します。
基本的な使い方から実践的な応用例まで、初心者でもすぐに活用できるコピペ可能なコードを紹介しますので、ぜひ最後までご覧ください。
【 この記事の概要 】
よく使う度 | |
難しさ | |
覚えておくと安心度 |
この記事を見てできるようになること
この記事を読むことで、以下のことができるようになります。
- VBAで「Ubound」と「Lbound」の基本について学ぶ
- 2次元配列・要素の追加、削除方法を習得する
- 「Ubound」と「Lbound」を使用することのメリットを理解する
- 「Ubound」と「Lbound」を使用する際の注意ポイントを確認する
- 「Ubound」と「Lbound」の実際の使用例を確認する
VBAでの「Ubound」と「Lbound」の基本:配列の要素数を取得する方法
「Ubound」と「Lbound」は、Excel VBAで配列の要素数を管理するために使用される便利な関数です。
- Ubound(Upper Bound)
- 配列の上限、つまり最後の要素のインデックスを返す関数です。
- Lbound(Lower Bound)
- 配列の下限、つまり最初の要素のインデックスを返す関数です。
これらの関数を使用することで、VBAコードから簡単に配列の範囲や要素数を取得できます。
例えば、2次元配列の行数や列数を動的に取得したり、動的配列のサイズを確認するのに役立ちます。
また、配列の要素数を元にループ処理やデータ操作を行う際にも、UboundやLboundは欠かせない存在です。
「Ubound」と「Lbound」の構成について解説
「Ubound」と「Lbound」は、配列の上限と下限の要素数を取得するための関数です。
Uboundについて解説
Ubound関数は、指定した配列の最も大きな要素数(インデックス値)を返します。
使用形式は以下の通りです。


- 配列名 (必須)
- 対象となる配列の名前を指定します。
- 次元数 (任意)
- 取得したい次元の番号を指定します。
省略した場合は1次元目が対象となります。
- 取得したい次元の番号を指定します。
より詳しい情報は、Microsoft公式のUBound 関数を参照してください。
Lboundについて解説
Lbound関数は、指定した配列の最も小さな要素数(インデックス値)を返します。
使用形式は以下の通りです。


- 配列名 (必須)
- 対象となる配列の名前を指定します。
- 次元数 (任意)
- 取得したい次元の番号を指定します。
省略した場合は1次元目が対象となります。
- 取得したい次元の番号を指定します。
より詳しい情報は、Microsoft公式のLBound 関数を参照してください。
『Ubound』『Lbound』の応用:2次元配列の操作と要素の追加・削除方法
「Ubound」と「Lbound」は1次元配列だけでなく、2次元配列や多次元配列でも効果的に活用できます。
特に、次元数を指定することで、より柔軟に配列の範囲を取得したり、要素の追加・削除などの操作も簡単に行えます。
ここでは、次元数の指定方法とその活用例について簡単に紹介し、2次元配列や要素の操作に関する基本的な使い方を見ていきます。


「Ubound」「Lbound」で、配列の次元数省略について解説
VBAの「Ubound」と「Lbound」は、次元数を指定して使用することで、2次元以上の配列でも簡単に操作が可能です。
配列の次元数を指定しない場合
配列の次元数を省略すると、VBAは自動的に1次元目の範囲を取得します。
これは、1次元配列に対して使用する場合に便利です。
Dim arr(5) As Long
MsgBox "1次元配列の上限を取得 : " & UBound(arr) '// 1次元配列の上限を取得


配列の次元数を指定する場合
2次元配列や多次元配列を使用する場合には、次元数を指定することで、特定の次元に対応する範囲を取得できます。
Dim arr(2, 5) As Long
MsgBox "2次元配列の行側上限を取得 : " & UBound(arr, 1) & vbCrLf & _
"2次元配列の列側上限を取得 : " & UBound(arr, 2)
'// 2次元目(列)の上限を取得


このように、次元数の指定有無によって、取得する範囲を柔軟にコントロールできるため、配列操作の精度が向上します。
2次元配列については、下記記事で具体的な内容を解説しています。
合わせてご覧ください。


配列の要素追加・削除について
VBAの「Ubound」や「Lbound」を使用することで、配列の上限や下限を確認しながら動的配列に要素を追加・削除する操作が簡単に行えます。
配列の要素を追加
動的配列に新しい要素を追加する際、「Ubound」を使って配列の上限を取得し、その位置に新たな要素を挿入できます。
「ReDim Preserve」を使用することで、既存のデータを保持しつつ配列のサイズを変更できます。
ReDim Preserve arr(Ubound(arr) + 1)
arr(Ubound(arr)) = 新しい要素 '// 要素の追加
配列の要素を削除
配列から要素を削除する際は、「Ubound」を使って配列の上限を確認し、その後に配列を再定義してサイズを縮小します。
「ReDim Preserve」を使用することで、不要な要素を削除できます。
ReDim Preserve arr(Ubound(arr) - 1) '// 要素の削除
「Lbound」は、配列の下限を確認する際に役立ちますが、要素追加や削除の操作では主に「Ubound」が使用されます。
これらの操作を通じて、VBAでの配列管理を柔軟に行うことができます。詳細は次の使用例で解説していきます。
動的配列については、下記記事で具体的な内容を解説しています。
合わせてご覧ください。


「Ubound」と「Lbound」を使うことのメリット
VBAの「Ubound」と「Lbound」を使用することで、配列の範囲を柔軟に取得でき、処理の効率が向上します。
特に、2次元配列や動的配列を扱う際に非常に役立ちます。
- 2次元配列の操作
- 次元配列における行や列のサイズを動的に取得し、繰り返し処理や条件分岐に活用可能です。
- 動的配列との連携
- ReDimを使って動的配列のサイズを変更する際にも、UboundとLboundは役立ちます。
「Ubound」と「Lbound」を使う際の注意ポイント
配列の範囲を間違えると、ランタイムエラーが発生する可能性があります。
以下の点に注意しましょう。
Option Baseの確認
「Option Base 0」または「Option Base 1」の違いによって「Lbound」が返す値が変わるため、コードを書く前に設定を確認することが重要です。
動的配列の初期化
ReDimを使用して動的配列のサイズを変更した後に、「Ubound」や「Lbound」を使用する際は、再定義後の範囲を確認してください。
「Ubound」と「Lbound」の使用例をご紹介
ここからは、「Ubound」と「Lbound」の使用例を紹介します。
以下に紹介する使用例は、すべてコピペしてすぐに実行できるコードです。
気になる例は、ぜひご覧いただき、実際に実行してみてください。]
VBAの基礎から応用までを効率よくしっかり学習したい方には、UdemyのVBA講座もおすすめです。
特に自己学習で進める場合、ビデオや実践例があると理解が進みやすくなります。


\ 自分のペースで学べるVBA講座はこちら /
使用例1: 1次元配列の要素数の上限と下限を取得する
「Ubound」と「Lbound」を使って、1次元配列の要素数を取得する方法を紹介します。
コード例
Sub GetArraySize()
Dim arr(2) As Long
Debug.Print "配列の要素数の上限は " & UBound(arr) & " です"
Debug.Print "配列の要素数の下限は " & LBound(arr) & " です"
End Sub
処理結果


コードの動作概要
1次元配列「arr」を長さ「3」(要素0から2)で宣言します。
「UBound」と「LBound」を使用して配列の上限と下限を取得し、Debug.Print で結果を出力します。
これにより、配列の範囲が明確になります。
このコードで使用している機能
1行ずつコードを解説
「クリック」してコードの詳細解説を見る
- Sub GetArraySize()
- 「GetArraySize」という名前のサブルーチンを定義します。
サブルーチンは「Sub」で始まり、「End Sub」で終わります。
- 「GetArraySize」という名前のサブルーチンを定義します。
- Dim arr(2) As Long
- 1次元配列「arr」を宣言し、3つの要素(0, 1, 2)を持つ配列を作成します。
- Debug.Print “配列の要素数の上限は ” & UBound(arr) & ” です”
- UBound(arr) を使って配列の上限(最後の要素のインデックス)を取得し、その結果を Debug.Print でイミディエイトウィンドウに出力します。
この場合、上限は「2」となります。
- UBound(arr) を使って配列の上限(最後の要素のインデックス)を取得し、その結果を Debug.Print でイミディエイトウィンドウに出力します。
- Debug.Print “配列の要素数の下限は ” & LBound(arr) & ” です”
- LBound(arr) を使って配列の下限(最初の要素のインデックス)を取得し、その結果を Debug.Print でイミディエイトウィンドウに出力します。
この場合、下限は「0」となります。
- LBound(arr) を使って配列の下限(最初の要素のインデックス)を取得し、その結果を Debug.Print でイミディエイトウィンドウに出力します。
- End Sub
- サブルーチンの終了を示します。
このコードは、配列操作においてインデックスエラーを防ぐために非常に有効です。
また、動的に配列サイズが変わる場合や、多次元配列を扱う際の基礎として、上限・下限を正確に把握できることが重要になります。
使用例2: 2次元配列の要素数の上限と下限を取得する
「Ubound」と「Lbound」を使って、2次元配列の各次元の上限・下限を取得する方法を紹介します。
コード例
Sub Get2DArrayBounds()
Dim arr(3, 5) As Long
Debug.Print "1次元目の上限は " & UBound(arr, 1) & " です"
Debug.Print "1次元目の下限は " & LBound(arr, 1) & " です"
Debug.Print "2次元目の上限は " & UBound(arr, 2) & " です"
Debug.Print "2次元目の下限は " & LBound(arr, 2) & " です"
End Sub
処理結果


コードの動作概要
「arr」を2次元配列として宣言し、1次元目は「0から3」、2次元目は「0から5」の範囲で配列を設定します。
「UBound」と「LBound」を使用して配列の上限と下限を取得し、Debug.Print で結果を出力します。
これにより、配列の範囲が明確になります。
このコードで使用している機能
1行ずつコードを解説
「クリック」してコードの詳細解説を見る
- Sub Get2DArrayBounds()
- 「Get2DArrayBounds」という名前のサブルーチンを定義します。
- Dim arr(3, 5) As Long
- 2次元配列「arr」を宣言します。
1次元目の範囲は「0から3」、2次元目の範囲は「0から5」です。
- 2次元配列「arr」を宣言します。
- Debug.Print “1次元目の上限は ” & UBound(arr, 1) & ” です”
- UBound(arr, 1) を使って、1次元目の上限を取得し、その結果を Debug.Print でイミディエイトウィンドウに出力します。
この場合、1次元目の上限は「3」です。
- UBound(arr, 1) を使って、1次元目の上限を取得し、その結果を Debug.Print でイミディエイトウィンドウに出力します。
- Debug.Print “1次元目の下限は ” & LBound(arr, 1) & ” です”
- LBound(arr, 1) を使って、1次元目の下限を取得し、その結果を Debug.Print でイミディエイトウィンドウに出力します。
この場合、1次元目の下限は「0」です。
- LBound(arr, 1) を使って、1次元目の下限を取得し、その結果を Debug.Print でイミディエイトウィンドウに出力します。
- Debug.Print “2次元目の上限は ” & UBound(arr, 2) & ” です”
- UBound(arr, 2) を使って、2次元目の上限を取得し、その結果を Debug.Print でイミディエイトウィンドウに出力します。
この場合、2次元目の上限は「5」です。
- UBound(arr, 2) を使って、2次元目の上限を取得し、その結果を Debug.Print でイミディエイトウィンドウに出力します。
- Debug.Print “2次元目の下限は ” & LBound(arr, 2) & ” です”
- LBound(arr, 2) を使って、2次元目の下限を取得し、その結果を Debug.Print でイミディエイトウィンドウに出力します。
この場合、2次元目の下限は「0」です。
- LBound(arr, 2) を使って、2次元目の下限を取得し、その結果を Debug.Print でイミディエイトウィンドウに出力します。
- End Sub
- サブルーチンの終了を示します。
このコードは、VBAにおける2次元配列の上限と下限を確認する基本的な操作を示しています。
UBound と LBound を使用することで、各次元の範囲を簡単に取得でき、特に多次元配列を扱う場合に有効です。
使用例3: 動的配列に要素を「追加」する
このコードは、動的配列「arr」に新しい要素を追加する動作を行います。
ReDim Preserve を使用して既存のデータを保持しながら配列のサイズを拡張し、最後のインデックスに新しい要素を追加します。
コード例
Sub AddElementToArray()
Dim arr() As String
ReDim arr(2)
arr(0) = "A"
arr(1) = "B"
arr(2) = "C"
ReDim Preserve arr(Ubound(arr) + 1)
arr(Ubound(arr)) = "D" '// 要素の追加
End Sub
処理結果


コードの動作概要
動的配列「arr」を宣言し、3つの要素を持つ配列を作成します。
配列に初期値を代入します(A, B, C)。
ReDim Preserve を使用して配列のサイズを拡張し、新しい要素を追加します。
この際、Preserve を指定しないと既存のデータが消えるため、注意が必要です。
このコードで使用している機能
1行ずつコードを解説
「クリック」してコードの詳細解説を見る
- Sub AddElementToArray()
- AddElementToArray という名前のサブルーチンを定義しています。
VBAではサブルーチンを定義するためにSubキーワードを使用し、処理のまとまりを作成します。
- AddElementToArray という名前のサブルーチンを定義しています。
- Dim arr() As String
- ここでは、文字列型の動的配列「arr」を宣言しています。
動的配列は、サイズが事前に固定されていない配列で、後からサイズを変更することができます。
- ここでは、文字列型の動的配列「arr」を宣言しています。
- ReDim arr(2)
- 動的配列「arr」に要素数3(0, 1, 2)を割り当てます。
この時点で、配列のサイズは「3つ」になります。
ReDim は配列のサイズを設定または再設定するために使用されますが、ここでは初めてサイズを設定しています。
- 動的配列「arr」に要素数3(0, 1, 2)を割り当てます。
- arr(0) = “A”
- 配列の最初の要素(インデックス0)に “A” を代入しています。
VBAの配列はインデックスが「0」から始まるため、最初の要素は arr(0) となります。
- 配列の最初の要素(インデックス0)に “A” を代入しています。
- arr(1) = “B”
- 2番目の要素(インデックス1)に “B” を代入します。
これはインデックス1の位置に値を格納する操作です。
- 2番目の要素(インデックス1)に “B” を代入します。
- arr(2) = “C”
- 3番目の要素(インデックス2)に “C” を代入します。
インデックスは0から2までなので、現在の配列の全要素が初期化されました。
- 3番目の要素(インデックス2)に “C” を代入します。
- ReDim Preserve arr(Ubound(arr) + 1)
- ReDim Preserve を使用して配列のサイズを1つ拡張します。
Preserve を指定することで、既存のデータが保持されます。
Ubound(arr) は配列の上限インデックス(最も大きいインデックス)を取得します。
Ubound(arr) + 1 で1つ新しい要素を追加するためのスペースを作ります。
注意:
Preserve を指定しない場合、既存のデータ(”A”, “B”, “C”)はすべて消えてしまいます。
このため、動的配列のサイズを変更するときにデータを保持したい場合は、Preserve を必ず使用する必要があります。
- ReDim Preserve を使用して配列のサイズを1つ拡張します。
- arr(Ubound(arr)) = “D”
- Ubound(arr) で拡張後の配列の最後のインデックスを取得し、その場所に “D” を代入しています。
これにより、新しい要素 “D” が配列に追加されます。
- Ubound(arr) で拡張後の配列の最後のインデックスを取得し、その場所に “D” を代入しています。
- End Sub
- サブルーチンの終了を示します。
VBAのサブルーチンは、End Sub で処理が終了します。
- サブルーチンの終了を示します。
このコードは、動的配列に要素を追加する基本的な方法を示しています。
特に重要なのは、ReDim Preserve を使うことで既存のデータを保持しながら配列のサイズを変更できる点です。
Preserve を使わない場合、配列サイズの変更と同時に全データが消去されるため、注意が必要です。
動的配列を操作する際には、サイズ変更時のデータ保持をしっかり理解することが、ミスを防ぐために重要です。
使用例4: 動的配列に要素を「削除」する
動的配列「arr」の最後の要素を削除する方法を紹介します。
ReDim Preserve を使用することで、既存のデータを保持しながら配列のサイズを縮小し、不要な要素を削除することができます。
この操作は、動的に変更されるデータの管理に役立ちます。
コード例
Sub RemoveElementFromArray()
Dim arr() As String
ReDim arr(3)
arr(0) = "A"
arr(1) = "B"
arr(2) = "C"
arr(3) = "D"
ReDim Preserve arr(Ubound(arr) - 1) '// 要素の削除
End Sub
処理結果


コードの動作概要
動的配列「arr」を宣言し、4つの要素を持つ配列を作成します。
配列に初期値を代入します。
配列の各要素に “A”, “B”, “C”, “D” を順に代入して初期化します。
ReDim Preserve を使用して配列のサイズを1つ減らし、最後の要素 “D” を削除します。
この操作では Preserve を指定することで、既存のデータを保持しながらサイズを変更します。
Preserve を指定しない場合、既存のデータが消えてしまうため注意が必要です。
このコードで使用している機能
1行ずつコードを解説
「クリック」してコードの詳細解説を見る
- Sub RemoveElementFromArray()
- この行は、RemoveElementFromArray という名前のサブルーチンを定義しています。
サブルーチンは、処理の一部をまとめたもので、何度でも呼び出して使うことができます。
- この行は、RemoveElementFromArray という名前のサブルーチンを定義しています。
- Dim arr() As String
- ここでは、動的配列「arr」を宣言しています。
String 型の動的配列は、文字列を格納するために使われます。
動的配列は、プログラム実行中にサイズを変更できる配列のことです。
- ここでは、動的配列「arr」を宣言しています。
- ReDim arr(3)
- この行は、動的配列「arr」のサイズを初期化します。
ReDim を使って、配列のサイズを設定します。
この場合、配列は「4つ」の要素(0番目から3番目)を持つように初期化されます。
ReDim を使うことで、配列のサイズを自由に決められます。
- この行は、動的配列「arr」のサイズを初期化します。
- arr(0) = “A”
- ここでは、配列の最初の要素(インデックス0)に “A” という文字列を代入しています。
インデックスとは、配列の要素を指す番号のことです。
この場合、arr(0) は配列の1番目の要素にアクセスしています。
- ここでは、配列の最初の要素(インデックス0)に “A” という文字列を代入しています。
- arr(1) = “B”
- この行では、2番目の要素(インデックス1)に “B” を代入しています。
配列の各要素にはインデックス番号を使ってアクセスします。
- この行では、2番目の要素(インデックス1)に “B” を代入しています。
- arr(2) = “C”
- ここでは、3番目の要素(インデックス2)に “C” を代入しています。
配列の要素は、このように順番にデータを入れていくことができます。
- ここでは、3番目の要素(インデックス2)に “C” を代入しています。
- arr(3) = “D”
- この行は、配列の最後の要素(インデックス3)に “D” を代入しています。
これで、配列「arr」に4つの要素が入ったことになります。
- この行は、配列の最後の要素(インデックス3)に “D” を代入しています。
- ReDim Preserve arr(Ubound(arr) – 1)
- この行では、配列「arr」の最後の要素を削除するために、ReDim Preserve を使用します。
ReDim だけを使うと、配列のサイズを変更できますが、Preserve を付け加えることで、既存のデータを保持したままサイズを変更することができます。
Ubound(arr) は、配列の最も大きいインデックス、つまり最後の要素の位置を取得します。
この場合、Ubound(arr) は 3 になります。 - Ubound(arr) – 1 で、配列のサイズを1つ小さくし、最後の要素 arr(3) を削除します。
- この行では、配列「arr」の最後の要素を削除するために、ReDim Preserve を使用します。
- End Sub
- この行でサブルーチンが終了します。
VBAのサブルーチンは、Sub で始まり、End Sub で終わるルールになっています。
- この行でサブルーチンが終了します。
このコードは、動的配列から最後の要素を削除する方法を示しています。
ReDim Preserve を使用することで、配列のサイズを変更しつつ、既存のデータを保持できます。
特に重要なのは、Preserve を使用しないと、すべてのデータが消えてしまう点です。
動的配列を扱う場合、データを保持しつつ操作する際に、ReDim Preserve が非常に役立ちます。
使用例5: 「Ubound」と「Lbound」を使用して配列をループ処理する
配列「arr」に格納された要素数を1つずつループ処理し、それぞれの要素を出力する方法を紹介します。
Lbound と Ubound を使って、配列の範囲(最初の要素から最後の要素まで)を動的に取得し、ループ内で効率的に処理します。
これにより、配列の要素数に依存しない汎用的なループ処理が可能です。
コード例
Sub LoopThroughArray()
Dim arr(0 To 3) As String
arr(0) = "A"
arr(1) = "B"
arr(2) = "C"
arr(3) = "D"
Dim i As Long
For i = Lbound(arr) To Ubound(arr)
Debug.Print arr(i) '// イミディエイトウィンドウに出力
Next i
End Sub
処理結果


コードの動作概要
文字列型の配列「arr」を宣言し、4つの要素を持つ配列を作成します。
配列に初期値を代入します。
4つの要素(A, B, C, D)を順に代入して、配列を初期化します。
Lbound と Ubound を使用して、配列の最初の要素と最後の要素を取得し、範囲内でループを実行します。
各要素を Debug.Print で出力します。
このコードで使用している機能
1行ずつコードを解説
「クリック」してコードの詳細解説を見る
- Sub LoopThroughArray()
- サブルーチン(小さな処理の単位)を定義します。
このサブルーチンは「LoopThroughArray」という名前が付いています。
- サブルーチン(小さな処理の単位)を定義します。
- Dim arr(0 To 3) As String
- 「arr」という名前の配列を宣言します。
この配列は「0から3」までの範囲で要素を持ち、合計4つの要素があります。
各要素は文字列(String 型)として格納されます。
- 「arr」という名前の配列を宣言します。
- arr(0) = “A”
- ここでは、配列の最初の要素(インデックス0)に “A” という文字列を代入しています。
インデックスとは、配列の要素を指す番号のことです。
この場合、arr(0) は配列の1番目の要素にアクセスしています。
- ここでは、配列の最初の要素(インデックス0)に “A” という文字列を代入しています。
- arr(1) = “B”
- この行では、2番目の要素(インデックス1)に “B” を代入しています。
配列の各要素にはインデックス番号を使ってアクセスします。
- この行では、2番目の要素(インデックス1)に “B” を代入しています。
- arr(2) = “C”
- ここでは、3番目の要素(インデックス2)に “C” を代入しています。
配列の要素は、このように順番にデータを入れていくことができます。
- ここでは、3番目の要素(インデックス2)に “C” を代入しています。
- arr(3) = “D”
- この行は、配列の最後の要素(インデックス3)に “D” を代入しています。
これで、配列「arr」に4つの要素が入ったことになります。
- この行は、配列の最後の要素(インデックス3)に “D” を代入しています。
- Dim i As Long
- ループ用のカウンタ変数「i」を宣言します。
この変数は、配列のインデックスを指すために使われます。
- ループ用のカウンタ変数「i」を宣言します。
- For i = Lbound(arr) To Ubound(arr)
- Lbound(arr) で配列の最初のインデックス(ここでは0)を取得し、Ubound(arr) で配列の最後のインデックス(ここでは3)を取得します。
その範囲内で、カウンタ変数「i」の値を1ずつ増やしながらループを繰り返します。
- Lbound(arr) で配列の最初のインデックス(ここでは0)を取得し、Ubound(arr) で配列の最後のインデックス(ここでは3)を取得します。
- Debug.Print arr(i)
- 配列の現在の要素(「i」に対応するインデックス)を Debug.Print で出力します。
この結果は、VBAの「イミディエイトウィンドウ」に表示されます。
配列のすべての要素が順番に表示されます。
- 配列の現在の要素(「i」に対応するインデックス)を Debug.Print で出力します。
- Next i
- For 文によるループ処理の次のインデックスに進みます。
全てのインデックス(0から3)で処理が行われたら、ループが終了します。
- For 文によるループ処理の次のインデックスに進みます。
- End Sub
- サブルーチンが終了します。
ここで処理が完了します。
- サブルーチンが終了します。
このコードは、Lbound と Ubound を使うことで、配列の範囲を動的に取得し、その範囲内でループ処理を行う基本的な例です。
Lbound は配列の最初の要素のインデックス、Ubound は最後の要素のインデックスを返すため、配列の大きさに関係なく正確なループを実行できます。
配列のインデックスやループ処理が自動的に処理されるため、要素の数が増減しても正確に処理が行えるのが利点です。
この記事のまとめ
今回の記事では、Excel VBAにおける「Ubound」と「Lbound」関数を使って、配列の上限・下限を取得し、配列のサイズや要素を柔軟に操作する方法を解説しました。
ここでもう一度ポイントを振り返りましょう。
ポイントのおさらい
- UboundとLboundの基本的な使い方を理解する
- 「Ubound」と「Lbound」を使用することで、配列の上限や下限を簡単に取得でき、配列操作の精度が向上します。
これらを使って、動的な配列処理が可能になります。
⇒ 「VBAの「Ubound」と「Lbound」の基本について解説」もう一度見る。
- 「Ubound」と「Lbound」を使用することで、配列の上限や下限を簡単に取得でき、配列操作の精度が向上します。
- 2次元配列の操作方法を理解する
- 2次元配列において、各次元ごとの上限や下限を取得する方法を学びました。
特に業務でデータが行列形式で扱われる際に便利です。
⇒ 「「Ubound」「Lbound」の、次元数指定と省略について解説」もう一度見る。
- 2次元配列において、各次元ごとの上限や下限を取得する方法を学びました。
- 動的配列の要素追加・削除を学ぶ
- 動的配列において、ReDim Preserve を使って要素を追加したり、削除する方法を解説しました。
動的なデータ操作に不可欠なテクニックです。
⇒ 「配列の要素追加・削除について」もう一度見る。
- 動的配列において、ReDim Preserve を使って要素を追加したり、削除する方法を解説しました。
- 注意点:Option Baseの確認とランタイムエラー対策
- 配列の上限や下限を取得する際に、Option Base 設定によって「Lbound」の返す値が変わる点に注意が必要です。
また、ランタイムエラーを防ぐために、適切なインデックスを確認してから操作することが重要です。
⇒ 「「Ubound」と「Lbound」を使う際の注意ポイント」もう一度見る。
- 配列の上限や下限を取得する際に、Option Base 設定によって「Lbound」の返す値が変わる点に注意が必要です。
- 使用例を通じて理解を深める
- 1次元配列や2次元配列で「Ubound」「Lbound」を使ったループ処理、動的配列への要素の追加・削除など、実際に動くコードを見て学びました。
⇒ 「「Ubound」と「Lbound」の使用例をご紹介」もう一度見る。
- 1次元配列や2次元配列で「Ubound」「Lbound」を使ったループ処理、動的配列への要素の追加・削除など、実際に動くコードを見て学びました。
VBAの「Ubound」と「Lbound」を活用することで、配列操作がより柔軟で効率的になります。
これにより、配列のサイズや要素を動的に管理できるため、データの変動が激しい状況でも柔軟に対応できます。
2次元配列や動的配列を使った業務の効率化にぜひ役立ててください。
再度記事を確認しながら、コードを実際に動かし、スキルを確実に自分のものにしましょう。
この記事の内容を参考にし、次のステップとして配列操作をもっと深く掘り下げ、業務の効率化を進めていきましょう。

