访问VBA:将表单/子表单名称传递给函数?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了访问VBA:将表单/子表单名称传递给函数?相关的知识,希望对你有一定的参考价值。

我试图将表单/子表单名称传递给函数但没有成功。该功能通过每个.Control对子窗体进行操作,并执行一组简单的查找和操作。我的代码按预期工作,表单/子表单名称是硬编码的;我正在寻找一种更通用的方法。

在带有和不带引号的函数调用中获取类型不匹配错误。

例:

'Function Call
  call AuditChanges("forms![someForm]![someSubForm]")

'Audit Function
Sub AuditChanges(thisForm as form)
    Dim ctl As Control
    Dim strTest as string

    For each ctl in thisForm.controls
        strTest = ctl.Value
        'do some stuff
    Next ctl

end sub

有关正确语法传递表单/子表单信息的任何建议吗?

谢谢!

答案

你的子呼叫是各种奇怪的:

您的错误的可能原因是报价。您当前正在将字符串传递给包含"forms![someForm]![someSubForm]"的函数

此外,当您没有收到返回值时,不应该使用括号(所以从不在调用sub时)。

此外,Call关键字很久以前就已被弃用。

您可能希望传递表单对象,而不是子表单控件对象

尝试像这样调用你的子:

AuditChanges forms![someForm]![someSubForm].Form

(以前在一行代码上从未有过这么多评论)

以上是关于访问VBA:将表单/子表单名称传递给函数?的主要内容,如果未能解决你的问题,请参考以下文章

VBA 使用变量表名设置记录

将文本框控件传递给私有子/函数

访问子表单可见性

访问 VBA 拼写检查子表单的一个字段

在 VBA 访问子窗体中应用错误的日期过滤器

访问 VBA 弹出子表单以提交条目