Home » エクセルマクロ・Excel VBAの使い方 » 配列 » 二次元配列の次元ごとの要素数を取得する

二次元配列の次元ごとの要素数を取得する

対象:Excel2007, Excel2010, Excel2013

「エクセル vba 配列 次元指定 要素数」
「excel vba 配列の各次元の要素数を取得する」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。

Excel VBA(Visual Basic for Applications)で、多次元の配列を使うときに、次元ごとの要素数を取得するにはどうすればいいのかを探している方による検索です。

[スポンサードリンク]

二次元配列の次元ごとの添字の最大値を取得するサンプルマクロ

まずは二次元配列で、各次元の添え字・インデックスの最大値を取得するコードを確認しましょう。

以下のマクロを実行すると、メッセージボックスに「5」「10」と順番に表示されます。

Sub 二次元配列の次元ごとの添字の最大値を確認する()

 Dim arr(5, 10) As String

 MsgBox UBound(arr, 1)
 MsgBox UBound(arr, 2)

End Sub

UBound関数を使うと、配列の添え字・インデックスの最大値を取得できます。

一次元配列の場合は、
 UBound(arr)
といった形で使われるのが一般的ですが、実はUBound関数には引数を2つ指定することができます。

UBound関数の第2引数には、最大値を調べたい配列の次元を表す整数を指定します。

一次元配列の場合の、
 UBound(arr)
というコードは、
 UBound(arr, 1)
の第2引数が省略されていただけなのです。

上記のマクロの場合、
 UBound(arr, 1)
で、二次元配列・arrの、1番目の次元の添え字の最大値が取得でき、
 UBound(arr, 2)
で、二次元配列・arrの、2番目の次元の添え字の最大値が取得できます。
このマクロでは、
 Dim arr(5, 10) As String
と宣言された配列でしたから、「5」「10」が順番にメッセージボックスに表示されたというわけです。

二次元配列の次元ごとの添字の最小値を取得するサンプルマクロ

次は、次元ごとの、添え字・インデックスの最小値の確認です。

Sub 二次元配列の次元ごとの添字の最小値を確認する()

 Dim arr(0 To 5, 0 To 10) As String

 MsgBox LBound(arr, 1)
 MsgBox LBound(arr, 2)

End Sub

配列の添え字の最小値を変えすLBound関数も、先のUBound関数と同じで、第2引数に次元を表す整数を指定します。

上記のマクロを実行して「0」が2回メッセージボックスに表示されたのを確認したら、
 Dim arr(0 To 5, 0 To 10) As String
を、
 Dim arr(1 To 5, 1 To 10) As String
に変更してから実行して、「1」が2回メッセージボックスに表示されることをご確認ください。

二次元配列の次元ごとの要素数を取得するサンプルマクロ

結局、以下のようなコードで、二次元配列の次元ごとの要素数を取得することができます。

Sub ニ次元配列の次元ごとの要素数を取得する()

 Dim arr(1 To 5, 1 To 10) As String

 MsgBox UBound(arr, 1) - LBound(arr, 1) + 1
 MsgBox UBound(arr, 2) - LBound(arr, 2) + 1

End Sub

一次元配列の要素数は、「添字の最大値-添字の最小値+1」すなわち、
 UBound(配列) - LBound(配列) + 1
で取得できることをご紹介しています。

このUBound関数・LBound関数に次元数も指定して
 UBound(配列, 次元) - LBound(配列, 次元) + 1
としてやれば、二次元配列など多次元配列の場合に、次元ごとの要素数を取得できます。

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » 配列 » 二次元配列の次元ごとの要素数を取得する

「配列」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.