VBA (Ms-Access) 从宏调用成员函数
Posted
技术标签:
【中文标题】VBA (Ms-Access) 从宏调用成员函数【英文标题】:VBA (Ms-Access) calling a memberfunction from a macro 【发布时间】:2018-07-26 10:02:19 【问题描述】:在 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””(+ 很多德语文本对我没有任何解释)。 【参考方案1】:根据 Albert Kallal 的说法,您不能。
在这里查看他的评论MS Access RunCode Macro cannot find my procedure
【讨论】:
以上是关于VBA (Ms-Access) 从宏调用成员函数的主要内容,如果未能解决你的问题,请参考以下文章
MS-Access 获取字段值,通过 VBA 函数运行,并发送到 SQL
如何通过 MS-Access VBA 中的 TextBox.OnKeyUp 属性传递 KeyCode
Libreoffice Base - 如何从宏调用控制事件?