从Word VBA中的函数返回两个值

从Word VBA中的函数返回两个值,vba,ms-word,Vba,Ms Word,我在VBA中编写了一个函数,该函数将计算两个值。是否有任何方法可以从该函数返回这两个值。在VBA中,您可以通过两种方法返回更多值:返回数组或使用ByRef声明,请参见以下内容: 'return as array Function ReturnTwoValues(x As Long) As Long() Dim ret(1) As Long ret(0) = x ret(1) = x * 2 ReturnTwoValu

我在VBA中编写了一个函数,该函数将计算两个值。是否有任何方法可以从该函数返回这两个值。

在VBA中,您可以通过两种方法返回更多值:返回数组或使用ByRef声明,请参见以下内容:

    'return as array
    Function ReturnTwoValues(x As Long) As Long()
        Dim ret(1) As Long
        ret(0) = x
        ret(1) = x * 2
        ReturnTwoValues = ret
    End Function

    'return parameters declared as ByRef
    Sub ReturnTwoPars(x As Long, ByRef y1 As Long, ByRef y2 As Long)
        y1 = x
        y2 = x * 2
    End Sub


    Sub Test()
        'return an array
        Dim ar() As Long
        ar = ReturnTwoValues(2) 'variable must be the same type as function
        Debug.Print ar(0), ar(1)

        'use ByRef
        Dim y1 As Long
        Dim y2 As Long
        ReturnTwoPars 2, y1, y2
        Debug.Print y1, y2

    End Sub

Sub multireturn()Dim a(10)只要x=7 a=twovalue(x)MsgBox“value is”&a(0)和“New value is”&a(1)End子函数twovalue(x)只要b(0)=x b(1)=x*10 twovalue=b End函数
我得到编译错误“Cant assign array”。。在您的示例中,我是否缺少任何东西:函数twovalue的类型为Long(),而数组a(10)的类型为Long(10)。将数组“a”的定义更改为:'Dim a()As Long'@roman pliske:我这样声明
Dim a()As Long
,并使用msgbox打印值。。。我在语句'MsgBox'的值为“&a(1)`指向'a(1)`时遇到上下文错误。您确定函数中返回的数组声明为dim(1)吗?参见上面的示例-在子测试中声明为不带元素的数组;在函数ReturnTwoValues中,使用两个元素声明值,然后返回。调用后,您可以访问这两个元素-ar(0)和ar(1),而不是在调用之前。@Roman Pliske:对不起,错误是我的。。。我已将函数中返回的数组声明为动态数组。。。