从另一个工作簿的工作表模块调用函数



当我尝试调用另一个工作簿的工作表模块内的子和函数时,只有子调用有效。该函数,即使是公共作用域,也会返回一个空(零长度)字符串。有可能解决这个问题吗?

Book1.xlsm的Sheet1的sheet模块内部代码:

Sub sMyMsg()
MsgBox "hey sub"
End Sub
Public Function fMyMsg() As String
fMyMsg = "hey func"
End Function

下面的代码位于与Book1.slsm位于同一文件夹中的另一个工作簿(Book2.xlsm)的标准模块中:

Sub Test_Sub() 'It works
Application.Run "Book1.xlsm!Sheet1.sMyMsg"
End Sub
Sub Test_Func() 'It doesn't work. Gives me a void (zero lenght) string
Dim s As String
s = "test"
s = Application.Run("Book1.xlsm!Sheet1.fMyMsg")
MsgBox s
End Sub

易于修复-如果需要用Run调用,请不要将代码放在工作表(或ThisWorkbook)模块中。:)

注意:它实际上与调用代码在不同工作簿中的问题无关。在同一个工作簿中,它不会这样工作。

最新更新