在其他模块中调用函数时编译错误

时间:2016-02-16 07:06:51

标签: excel vba excel-vba office-2010

在Excel中的VBA宏中,我尝试从另一个模块中的一个模块调用函数。

我能够成功调用另一个模块中的函数...但是只有当我忽略函数的返回值时才会这样。

当我尝试在另一个模块中调用函数并保存返回值时 (MyReturnValue = Application.Run "Module2.MyFunctionInAnotherModule") ,我收到编译错误:"预期:声明结束"。

显然我在该语句的语法中出错了,但我一直无法找到正确的语法。

模块1:

Public Sub WhatGives()
Dim MyReturnValue As String

    ' Calling a subroutine in another module works
    Application.Run "Module2.MySub"

    MyReturnValue = MyFunctionInThisModule
    MsgBox ("MyFunctionInThisModule( ) returned:  " & MyReturnValue)

    ' Calling a function in another module works if
    ' I discard the return value of the function
    Application.Run "Module2.MyFunctionInAnotherModule"

    ' But calling a function and saving its return
    ' value doesn't work. When I uncomment the following
    ' statements, the second one results in the
    ' compiler error: "Expected: end of statement"
    'Dim MyReturnValue As String
    'MyReturnValue = Application.Run "Module2.MyFunctionInAnotherModule"
    'MsgBox("MyFunctionInAnotherModule( ) returned:  " & MyReturnValue)

End Sub

Private Function MyFunctionInThisModule()
    MsgBox ("MyFunctionInThisModule() invoked")
    MyFunctionInThisModule = "Return value from MyFunctionInThisModule"
End Function

第2单元:

Private Sub MySub()
    MsgBox ("MySub( ) invoked")
End Sub

Private Function MyFunctionInAnotherModule() As String
    MsgBox ("MyFunctionInAnotherModule( ) invoked")
    MyFunctionInAnotherModule = "Return value from MyFunctionInAnotherModule"
End Function

1 个答案:

答案 0 :(得分:0)

你需要将你的价值归还给某些东西。 试试xyz = Module2.MyFunctionInAnotherModule

编辑:抱歉,您还需要从功能中删除私人。

Function MyFunctionInAnotherModule() As String
    MsgBox ("MyFunctionInAnotherModule( ) invoked")
    MyFunctionInAnotherModule = "Return value from MyFunctionInAnotherModule"
End Function