VBA で配列の長さを取得する
![VBA で配列の長さを取得する](/img/VBA/feature-image---get-the-length-of-an-array-in-vba.webp)
配列は、後で使用したりコードの実行中に必要な情報を保存できる、コンピュータープログラミングで人気のあるツールです。情報を保存および取得する必要が避けられない場合があるため、ほとんどすべてのコンピュータープログラミング言語の配列がライブラリに含まれています。
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