Vba: 関数から配列を返す方法


VBA の関数から配列を返すには、次の基本構文を使用できます。

 Function GenerateRandom() As Integer()

    Dim RandValues(2) As Integer
     
    'generate three random integers and store them in array 
    RandValues(0) = Int(Rnd * 100)
    RandValues(1) = Int(Rnd * 100)
    RandValues(2) = Int(Rnd * 100)
    
    'return array as a result of the function
    GenerateRandom = RandValues

End Function

この特定の例では、3 つのランダムな整数を生成し、それらを配列に格納し、 GenerateRandom()という関数の結果として配列を返します。

次の例は、2 つの異なる方法でこの関数から値を返す方法を示しています。

  • メッセージボックスに値を返す
  • セル内の戻り値

さあ行こう!

例 1: 関数から配列を返し、メッセージ ボックスに値を表示する

次の構文を使用して、3 つのランダムな整数の配列を生成するGenerateRandom()という関数を作成し、 MsgBox関数を使用してメッセージ ボックスに整数を表示できます。

 'define function to generate array of three random integers
Function GenerateRandom() As Integer()

    Dim RandValues(2) As Integer
     
    RandValues(0) = Int(Rnd * 100)
    RandValues(1) = Int(Rnd * 100)
    RandValues(2) = Int(Rnd * 100)
    
    GenerateRandom = RandValues

End Function

'define sub to display values from function in a message box
SubDisplayRandom ()

     Dim WS As Worksheet
     Dim RandomValues() As Integer
     Dim i As Integer

     Set WS = Worksheets(" Sheet1 ")
     RandomValues = GenerateRandom()

     j = " Array values: "
     For i = 0 To 2
          j = (j & RandomValues(i) & " ")
     Next i
     MsgBox j

End Sub

このマクロを実行すると、次の出力が表示されます。

VBA関数の戻りテーブル

この関数がランダムな整数9687 、および5をメッセージ ボックスに返していることがわかります。

例 2: 関数から配列を返し、セルに値を表示する

次の構文を使用して、3 つのランダムな整数の配列を生成し、Excel のセルA1から始まる整数を表示するGenerateRandom()という関数を作成できます。

 'define function to generate array of three random integers
Function GenerateRandom() As Integer()

    Dim RandValues(2) As Integer
     
    RandValues(0) = Int(Rnd * 100)
    RandValues(1) = Int(Rnd * 100)
    RandValues(2) = Int(Rnd * 100)
    
    GenerateRandom = RandValues

End Function

'define sub to display values from function starting in cell A1
SubDisplayRandom ()

     Dim WS As Worksheet
     Dim RandomValues() As Integer
     Dim i As Integer

     Set WS = Worksheets(" Sheet1 ")
     RandomValues = GenerateRandom()

     For i = 0 To 2
          WS.Range(" A1 ").Offset(i, 0).Value = RandomValues(i)
     Next i

End Sub

このマクロを実行すると、次の出力が表示されます。

この関数がワークシートのセルA1からランダムな整数9687 、および5を返すことがわかります。

: 別のセルで始まるテーブル値を返すには、コード内のA1 を別のセル参照に置き換えるだけです。

追加リソース

次のチュートリアルでは、VBA で他の一般的なタスクを実行する方法について説明します。

VBA関数から値を返す方法
VBAで別のシートからセルの値を取得する方法
VBAでIsNumericを使用してセルが数値かどうかを確認する方法

コメントを追加する

メールアドレスが公開されることはありません。 が付いている欄は必須項目です