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
このマクロを実行すると、次の出力が表示されます。
この関数がランダムな整数96 、 87 、および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からランダムな整数96 、 87 、および5を返すことがわかります。
注: 別のセルで始まるテーブル値を返すには、コード内のA1 を別のセル参照に置き換えるだけです。
追加リソース
次のチュートリアルでは、VBA で他の一般的なタスクを実行する方法について説明します。
VBA関数から値を返す方法
VBAで別のシートからセルの値を取得する方法
VBAでIsNumericを使用してセルが数値かどうかを確認する方法