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
这个特定的示例生成三个随机整数,将它们存储在一个数组中,然后返回该数组作为名为GenerateRandom()的函数的结果。
以下示例展示了如何以两种不同的方式从此函数返回值:
- 返回值到消息框
- 返回单元格中的值
我们走吧!
示例1:从函数返回一个数组并在消息框中显示值
我们可以使用以下语法创建一个名为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:从函数返回数组并在单元格中显示值
我们可以使用以下语法创建一个名为GenerateRandom()的函数,该函数生成一个由三个随机整数组成的数组,然后在Excel中显示从单元格A1开始的整数:
'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中从另一个工作表中获取单元格的值
如何使用 IsNumeric 检查单元格是否为 VBA 中的数字