VBA 配列を返す関数

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

masahiro yoshida

Last updated on 4月 19, 2022

この記事では、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
vba-free-addin

VBA Code Examples Add-in

Easily access all of the code examples found on our site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(No installation required!)

Free Download

Return to VBA Code Examples