VBA 配列を返す関数
この記事では、VBA関数を使用して配列を返す方法を説明します。
VBA 配列を返す関数
関数を使用して配列を返す場合、配列の型はvariantで宣言することを強くお勧めします。
Function ReturnArray() As Variant
End Function
動的配列の方が扱いやすいためです。配列の大きさはあまり気にならなくなります。
配列を返す関数の例
ここでは、配列を返す関数の例を示します。
Function ReturnArray() As Variant
Dim tempArr As Variant
'一時的な配列を作成する
ReDim tempArr(1 To 3, 1 To 2)
'配列の値を代入する
tempArr(1, 1) = "Steve"
tempArr(1, 2) = "Johnson"
tempArr(2, 1) = "Ryan"
tempArr(2, 2) = "Johnson"
tempArr(3, 1) = "Andrew"
tempArr(3, 2) = "Scott"
'出力配列
ReturnArray = tempArr
End Function
Sub TestTransposeArray()
Dim outputArr As Variant
'関数を呼び出す
outputArr = ReturnArray()
'テスト出力
MsgBox outputArr(2, 1)
End Sub
サイズの問題を避けるために、データ型をバリアントとして配列を宣言していることに注意してください。 この例では、配列を入力として受け取り、その配列を転置し、新しい転置後の配列を出力します。
Function TransposeArray(MyArray As Variant) As Variant
Dim x As Long, y As Long
Dim maxX As Long, minX As Long
Dim maxY As Long, minY As Long
Dim tempArr As Variant
'上限と下限を取得
maxX = UBound(MyArray, 1)
minX = LBound(MyArray, 1)
maxY = UBound(MyArray, 2)
minY = LBound(MyArray, 2)
'一時的な配列を作成する
ReDim tempArr(minX To maxX, minY To maxX)
'配列の転置
For x = minX To maxX
For y = minY To maxY
tempArr(y, x) = MyArray(x, y)
Next y
Next x
'出力配列
TransposeArray = tempArr
End Function
Sub TestTransposeArray()
Dim testArr(1 To 3, 1 To 2) As Variant
Dim outputArr As Variant
'配列の値を代入する
tempArr(1, 1) = "Steve"
tempArr(1, 2) = "Johnson"
tempArr(2, 1) = "Ryan"
tempArr(2, 2) = "Johnson"
tempArr(3, 1) = "Andrew"
tempArr(3, 2) = "Scott"
'転置関数を呼び出す
outputArr = TransposeArray(testArr)
'テスト出力
MsgBox outputArr(2, 1)
End Sub