【发布时间】:2023-03-18 08:16:01
【问题描述】:
在 VBA (Access) 中,我使用公共函数“FromStart”创建了一个名为“ZFormHelperClass”的类模块
Public Function FromStart(ByVal name As String, Optional ByVal lfd As Long = InvalidLfd, Optional ByVal centerd As Boolean = False) As ZFormContainerClass
'Do something
End Function
我在一个模块中使用一个公共函数作为这个类的构造函数:
Public Function ZFormHelper() As ZFormHelperClass
Set ZFormHelper = New ZFormHelperClass
End Function
然后我尝试使用宏(“测试”)在“运行代码”(或“执行代码”)中调用此函数,如下所示:
=ZFormHelper.FromStart("Start", -1, True)
但它甚至不允许我保存宏(错误:德语版本:“函数名参数的值无效”)。我必须创建一个函数来做到这一点。
Function doStart()
Call ZFormHelper.FromStart("Start", -1, True)
End Function
所以我想知道为什么会这样,是否有办法直接调用类函数而无需创建虚拟函数。
【问题讨论】:
-
如果您能够创建和使用类模块,我不得不质疑为什么您需要涉及宏?
-
我正在使用旧版软件。这个问题是重构的结果。在这种情况下,宏被命名为“Autokeys”,并在用户按下 crtl + Y 时调用
-
顺便说一句。尝试从功能区按钮中的“OnAction”-Trigger 中调用该函数时,我遇到了同样的问题...
-
啊,好吧。我认为正确的宏操作是 RunCode - 我找不到执行选项。您使用的是哪个版本的 Access?
-
@Minty:RunCode 似乎是正确的(在德语中,它的“Ausführen Code”字面意思是“执行代码”)。我正在使用 Office 16。删除 = 并没有太大变化。现在我可以保存宏,但是在启动它时,我得到一个错误:“找不到给定的名称“ZFormHelper””(+ 很多德语文本对我没有任何解释)。