【Excel VBA】配列の要素数を取得する方法!二次元配列も取得可!

VBAで配列の要素数を取得したいときはないでしょうか。

けど、そんな中で悩むことは、

・VBAで配列の要素数を取得したいが方法がよくわからない
・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で配列の要素数を取得する方法
・VBAで二次元配列の要素数を取得する方法

についてまとめました。

また、他にも便利な方法がありますので、よろしければご参照頂ければと思います。



この記事の関連キーワード

こちらの記事の関連キーワード一覧です。クリックするとキーワードに関連する記事一覧が閲覧できます。




タカヒロ

プログラミングやマーケティングなどに興味あるけど
どのスクールが良いか悩むときはないですか?

タカヒロもスクール選びにとても苦労しました…

そんな時には数ある中から第三者目線でいまの貴方に合ったスクールを提案してくれるスクマドのカウンセリングサービスがおすすめです。

メリットだけでなくディメリットもズバリと伝えてくれます!

これでお悩み時間を短縮できますね!詳細は☟になります。

※完全無料です。ご安心ください。





コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です