在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
答案 0 :(得分:0)
你需要将你的价值归还给某些东西。
试试xyz = Module2.MyFunctionInAnotherModule
编辑:抱歉,您还需要从功能中删除私人。
Function MyFunctionInAnotherModule() As String
MsgBox ("MyFunctionInAnotherModule( ) invoked")
MyFunctionInAnotherModule = "Return value from MyFunctionInAnotherModule"
End Function