VBA で配列の長さを取得する

Glen Alfaro 2023年1月30日
  1. VBA で最高と最低のインデックスの差を取得して配列の長さを取得する
  2. VBA で COUNTA ワークシート関数を使用して配列の長さを取得する
VBA で配列の長さを取得する

配列は、後で使用したりコードの実行中に必要な情報を保存できる、コンピュータープログラミングで人気のあるツールです。情報を保存および取得する必要が避けられない場合があるため、ほとんどすべてのコンピュータープログラミング言語の配列がライブラリに含まれています。

VBA では、配列の長さを取得することは、配列内に存在する要素の数を数えることを意味します。これを行うには、インデックスの最低要素と最高要素を知っている必要があります。次に、最大値と最小値の差が配列の長さになります。

また、COUNTA ワークシート関数を使用して同じ情報を取得することもできます。

このチュートリアルでは、インデックスの最大/最小の差と COUNTA ワークシート関数を使用して、VBA 配列の長さを取得します。

VBA で最高と最低のインデックスの差を取得して配列の長さを取得する

このメソッドのロジックは、最小のインデックスを最大のインデックスに減算してから 1 を加算することにより、配列の長さを取得できることです。配列の長さに最小のインデックスを含める必要があるため、1 を追加します。

以下のコードブロックは、固定長配列の配列の配列長を取得する方法を示しています。配列の長さを取得するために最高のインデックスのみを取得することは、最低のインデックスが 0 に等しくなく、異なるインデックスで開始する可能性があるため、常に正しいとは限らないことに注意してください。

Sub ArrayLengthDemo()

Dim stringArr(5 To 9) As String

stringArr(5) = "Glen"
stringArr(6) = "Yumi"
stringArr(7) = "Myla"
stringArr(8) = "Katrina"
stringArr(9) = "Jose"

Debug.Print "The array length of stringArr is " UBound(stringArr) - LBound(stringArr) + 1
End Sub

ArrayLengthDemo 出力:

The array length of stringArr is  5

以下のコードブロックは、動的配列の配列の配列長を取得する方法を示しています。

Sub ArrayLengthDemo()

Dim StringArr As Variant

StringArr = Array("Glen", "Yumi", "Katrina", "Myla", "Jose")

Debug.Print "The array length of StringArr is "; UBound(StringArr) - LBound(StringArr) + 1

End Sub

ArrayLengthDemo 出力:

The array length of stringArr is  5

以下のコードで配列の長さを取得する関数を実装する方法を示します。配列の長さを取得する必要が繰り返し発生する場合に役立ちます。

また、以下のコードには、測定する配列が null であるかどうかを検出するための追加のロジックがあります。

Public Function GetArrayLength(arr As Variant) As Integer
   If IsEmpty(arr) Then
      GetArrayLength = 0
   Else
      GetArrayLength = UBound(arr) - LBound(arr) + 1
   End If
End Function

Sub GetArrayLengthDemo1()


Dim stringArr(5 To 9) As String

stringArr(5) = "Glen"
stringArr(6) = "Yumi"
stringArr(7) = "Myla"
stringArr(8) = "Katrina"
stringArr(9) = "Jose"

Debug.Print "The array length is " & GetArrayLength(stringArr)

End Sub

Sub GetArrayLengthDemo2()

Dim NullArr As Variant

Debug.Print "The array length is " & GetArrayLength(NullArr)

End Sub

GetArrayLengthDemo1 出力:

The array length is 5

GetArrayLengthDemo2 出力:

The array length is 0

VBA で COUNTA ワークシート関数を使用して配列の長さを取得する

配列は、単一または多次元の方法で構造化された要素のコレクションです。COUNTA ワークシート関数を使用して、1 行のコードでこれらの要素をカウントできます。

以下のコードブロックは、COUNTA ワークシート関数を使用して配列の長さを取得する方法を示しています。

構文:

WorksheetFunction.CountA([ arrayName ])

パラメータ:

[arrayName] 測定するアレイ

ワークシート関数 COUNTA は、要素に制限されています。大きな配列を扱う場合は、最初の方法をお勧めします。

Sub ArrayLengthDemo()

Dim stringArr(5 To 9) As String

stringArr(5) = "Glen"
stringArr(6) = "Yumi"
stringArr(7) = "Myla"
stringArr(8) = "Katrina"
stringArr(9) = "Jose"

Debug.Print "The array length of stringArr is " & WorksheetFunction.CountA(stringArr)
End Sub

ArrayLengthDemo 出力:

The array length of stringArr is 5
Sub ArrayLengthDemo()

Dim StringArr As Variant

StringArr = Array("Glen", "Yumi", "Katrina", "Myla", "Jose")

Debug.Print "The array length of StringArr is " & WorksheetFunction.CountA(stringArr)

End Sub

ArrayLengthDemo 出力:

The array length of stringArr is  5 

関連記事 - VBA Array