В макросе VBA в Excel я пытаюсь вызвать функцию из одного модуля в другом модуле.Ошибка компилятора при вызове функции в другом модуле
Я могу успешно вызвать функцию в другом модуле ... но только если не учитывать возвращаемое значение из функции.
При попытке вызвать функцию в другом модуле и сохранить возвращаемое значение (MyReturnValue = Application.Run "Module2.MyFunctionInAnotherModule")
, я получаю Ошибка компилятора: «Прогнозный: конец заявления».
Очевидно, что я получаю что-то не так в синтаксисе этого утверждения, но я не смог найти правильный синтаксис.
Module1:
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
Есть ли причина, что функция не может быть выполнена ** Публичная **? – Jeeped
'' 'MyReturnValue = Application.Run (" Module2.MyFunctionInAnotherModule ")' ''? – dee