在不使用VBA中的临时变量的情况下将信息传递给函数

时间:2014-10-21 06:09:28

标签: arrays vba

我已经看过代码实例,其中信息传递给没有临时变量的函数,我无法弄清楚如何去做。这就是我的意思:

For i = 1 to ubound(arr)
    temp = cool_function(arr(i))
next

因此,在上文中,可以将arr(i)直接传递给cool_function。但是,当我尝试时,我得到一个ByRef参数类型不匹配。我需要做的是以下内容:

For i = 1 to ubound(arr)
    temp2 = arr(i)
    temp = cool_function(temp2)
next

我必须将arr(i)的值赋给temp2,然后将temp2传递给函数。如何将值传递给属于数组的函数。我尝试将ByVal放在函数中但是没有用。

*************** UPDATE *************** 问题解决了。需要的是ByVal。我做了一些错别字,但我能够让它上班。

2 个答案:

答案 0 :(得分:1)

只要元素类型与参数类型相同,它就应该工作 例如,你有一个像这样的函数:

Function cool_function(wild As String)
    '~~> cool stuff here
End Function

在你的潜艇中,下面应该有效:

Sub Test()
    Dim arr() As String
    '~~> populate array somewhere here
    For i = 1 to Ubound(arr)
        temp = cool_function(arr(i))
    Next
End Sub

答案 1 :(得分:0)

这对我有用:

Sub arrFunctionTest()

    Dim arrV(3) As Variant

    For i = 1 To 3
        arrV(i) = i
        arrV(i) = cool_Function(arrV, i)
    Next i

    For i = 1 To 3
        Debug.Print arrV(i)
    Next i

End Sub


Function cool_Function(arr As Variant, i) As Integer
    cool_Function = arr(i) * 2
End Function