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 - 如何从宏调用控制事件?

如何使用sql语句和vba将数据从MS-Access导入excel power查询?

从 VBA (MS-Access) 填写 PDF 表单

如何在 VBA 代码中的 ms-access 中执行查询?