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

当我们运行这个宏时,我们会收到以下输出:

函数的VBA返回表

我们可以看到该函数在消息框中返回随机整数96875

示例 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中返回随机整数96875

注意:要返回从不同单元格开始的表值,只需将代码中的A1替换为不同的单元格引用即可。

其他资源

以下教程说明如何在 VBA 中执行其他常见任务:

如何从 VBA 函数返回值
如何在VBA中从另一个工作表中获取单元格的值
如何使用 IsNumeric 检查单元格是否为 VBA 中的数字

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注