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コード例アドイン

当サイトで紹介しているすべてのコード例に簡単にアクセス可能。

メニューから選択してクリックするだけで、コードがモジュールに直接挿入されます(.xlam アドイン)。

(インストール不要!)

無料ダウンロード

VBAコード例に戻る