VBAで配列の要素数を取得したいときはないでしょうか。
けど、そんな中で悩むことは、
・VBAで二次元配列の要素数を取得したいが方法がよくわからない
ですよね。
今回はそんなお悩みを解決する
・VBAで二次元配列の要素数を取得する方法
についてまとめます!
もくじ
VBAで配列の要素数を取得するイメージ
VBAで配列の配列の長さである要素数を取得するイメージについて説明をします。
以下のように配列を作成し、要素に値を入れます。
Dim arrTemp(2 To 10) As Variant
VBAを実行すると配列の要素数が表示されます。
また、二次元配列でも同様に要素数を取得できます。
それでは早速試してみましょう。
配列の要素数の数え方
配列の要素数の数え方について説明をします。
配列はExcelでいうセルとセル範囲の構造と似ていて、通常の1次元の配列ですと、
縦横1方向のセル範囲、
2次元ですと縦と横軸を組み合わせたセル範囲
というイメージとなります。
要素の数はセル範囲のセルの件数ということになります。
要素数のカウントで使用する関数はLBound関数とUBound関数で、配列の最小と最大要素数を取得し計算していきます。
構文 | LBound(配列,次元) | UBound(配列,次元) |
---|---|---|
説明 | 配列の最小要素数を取得します。 次元は省略した場合は1次元となります。 |
配列の最大要素数を取得します。 次元は省略した場合は1次元となります。 |
配列要素数のカウント式
配列の要素数のカウント式は以下の通りです。
配列の最大要素数から最小要素数をマイナスし1加算する形になります。
一次元と二次元配列の総要素数はもう一方の軸である二次元の要素数をカウントし、一次元の要素数と掛け合わせます。
一次元配列の要素数
UBound(配列) - LBound(配列) + 1
二次元配列の要素数
UBound(配列, 2) - LBound(配列, 2) + 1
一次元と二次元配列の総要素数
(UBound(配列, 1) - LBound(配列, 1) + 1) * (UBound(配列, 2) - LBound(配列, 2) + 1)
VBAで配列の要素数を取得する方法
VBAで配列の要素数を取得する方法について説明をします。
VBAコード
サンプルのVBAコードは以下の通りです。
Sub 配列の要素数を取得する()
'Variant型で定義します。
Dim arrTemp(2 To 10) As Variant
'配列の最大要素数を取得し0以上の場合処理します。
If (UBound(arrTemp) >= 0) Then
MsgBox "要素が" & UBound(arrTemp) - LBound(arrTemp) + 1 & "個あります。" & vbCrLf & _
"最小要素が" & LBound(arrTemp) & "、最大要素が" & UBound(arrTemp) & "です。"
End If
End Sub
VBAを設定する
VBAを設定していきましょう。
要素の範囲を指定します。
サンプルでは2番目から10番目の要素を指定しています。
Dim arrTemp(2 To 10) As Variant
このイメージです。
VBAの実装
VBAの実装方法については
VBAの実装手順
をご参照ください。
VBAを実行する
VBAを実行してみましょう。
一次元配列の要素数が取得できましたね。
VBAの説明
VBAについて説明をします。
Variant型で定義します。なお、要素位置番号を指定しない場合は動的配列となります。
Dim arrTemp(2 To 10) As Variant
配列の最大要素数を取得し0以上の場合はメッセージを表示させます。
If (UBound(arrTemp) >= 0) Then
メッセージの中で上記計算式で要素数をカウントし出力します。
MsgBox "要素が" & UBound(arrTemp) - LBound(arrTemp) + 1 & "個あります。" & vbCrLf & _
"最小要素が" & LBound(arrTemp) & "、最大要素が" & UBound(arrTemp) & "です。"
VBAで二次元配列の要素数を取得する方法
VBAで二次元配列の要素数を取得する方法について説明をします。
VBAコード
サンプルのVBAコードは以下の通りです。
Sub 二次元配列の要素数を取得する()
'Variant型で定義します。
Dim arrTemp(2 To 10, 1 To 3) As Variant
'配列の最大要素数を取得し0以上の場合処理します。
If (UBound(arrTemp, 1) >= 0) Then
MsgBox "一次元配列の要素が" & UBound(arrTemp, 1) - LBound(arrTemp, 1) + 1 & "個あります。" & vbCrLf & _
"最小要素が" & LBound(arrTemp, 1) & "、最大要素が" & UBound(arrTemp, 1) & "です。" & vbCrLf & vbCrLf & _
"二次元配列の要素が" & UBound(arrTemp, 2) - LBound(arrTemp, 2) + 1 & "個あります。" & vbCrLf & _
"最小要素が" & LBound(arrTemp, 2) & "、最大要素が" & UBound(arrTemp, 2) & "です。" & vbCrLf & vbCrLf & _
"総要素数は" & (UBound(arrTemp, 1) - LBound(arrTemp, 1) + 1) * (UBound(arrTemp, 2) - LBound(arrTemp, 2) + 1) & "個です。"
End If
End Sub
VBAを設定する
VBAを設定していきましょう。
要素の範囲を指定します。
サンプルでは一次元に2番目から10番目の要素、二次元に1番目から3番目の要素を指定しています。
Dim arrTemp(2 To 10, 1 To 3) As Variant
このイメージです。
VBAを実行する
VBAを実行してみましょう。
二次元配列の要素数が取得できましたね。
VBAの説明
VBAについて説明をします。
Variant型で定義します。「、」で区切ると二次元以降の配列の指定ができます。
Dim arrTemp(2 To 10, 1 To 3) As Variant
配列の最大要素数を取得し0以上の場合はメッセージを表示させます。
If (UBound(arrTemp) >= 0) Then
メッセージの中で上記計算式で一次元と二次元配列の総要素数をカウントし出力します。
MsgBox "一次元配列の要素が" & UBound(arrTemp, 1) - LBound(arrTemp, 1) + 1 & "個あります。" & vbCrLf & _
"最小要素が" & LBound(arrTemp, 1) & "、最大要素が" & UBound(arrTemp, 1) & "です。" & vbCrLf & vbCrLf & _
"二次元配列の要素が" & UBound(arrTemp, 2) - LBound(arrTemp, 2) + 1 & "個あります。" & vbCrLf & _
"最小要素が" & LBound(arrTemp, 2) & "、最大要素が" & UBound(arrTemp, 2) & "です。" & vbCrLf & vbCrLf & _
"総要素数は" & (UBound(arrTemp, 1) - LBound(arrTemp, 1) + 1) * (UBound(arrTemp, 2) - LBound(arrTemp, 2) + 1) & "個です。"
VBAの実装手順
実装手順は以下の通りです。
Excel側にVBAを実装していきます。
①Excelを新規に開き、「開発」タブをクリックし、「VisualBasic」をクリックします。
もしくはショートカットキー「Alt」+「F11」でもOKです。
②標準モジュールを追加します。
左ペインのVBAProjectを右クリックし、「挿入」、「標準モジュール」を選択します。
③右ペインのウインドウに上記のVBAを入力します。
こちらで完了です。
VBAを実行する
では早速VBAの実行をしてみましょう。
①「開発」タブの「VBA」をクリックし実行したいマクロを選択し、「実行」をクリックします。
②処理がされたことが確認できれば完了です。
さいごに
いかがでしょうか。
今回は、
・VBAで二次元配列の要素数を取得する方法
についてまとめました。
また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。
コメントを残す