首页 > 解决方案 > 在 VBA 中使用函数结果作为函数参数?

问题描述

VBA 新手,

您可以将函数结果用作另一个函数的参数吗?如果没有,最好的方法是什么?以下代码应说明问题:我使用函数 f_1 生成数据并希望将数据传递给函数 f_2。

Function f_1(Arg_11, Arg_12)
    For i = 1 To 100
        Cells(i, 1).Value = Arg_11 * Arg_12
    Next i
End Function

Function f_2(Arg_21, Arg_22)
    For j = 1 To 100
        Cells(j, 1).Value Arg_21 + Arg_22
    Next j
End Function

Sub test()
k = 20
m = 10

g = 1

Debug.Print (f_1(k, m))
Debug.Print (f_2(g, f_1))

End Sub

标签: excelvba

解决方案


是的,但只有函数的返回值作为参数传递给另一个方法,而不是函数本身。

请参见下面的示例:

Function NumberOne() As Integer
    NumberOne = 1
End Function

Function NumberTwo() As Integer
    NumberTwo = 2
End Function

Function Total(ByVal one As Integer, ByVal two As Integer) As Integer
    Total = one + two
End Function

Sub T()
    Dim t As Integer
        t = Total(NumberOne(), NumberTwo())
        
    Debug.Print t
End Sub

返回类型并不重要,除非函数返回一个需要使用Set关键字设置其引用的对象。

因此,以下内容也是有效的:

Sub T()
    PrintThem ArrayValues()
End Sub

Sub PrintThem(ByVal values As Variant)

    Dim v As Variant
    
    For Each v In values
        Debug.Print v
    Next v
    
End Sub

Function ArrayValues() As Variant
    ArrayValues = Array(1, 2, 3)
End Function

推荐阅读