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

问题描述 投票:0回答:1

我试图将表单/子表单名称传递给函数但没有成功。该功能通过每个.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

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

谢谢!

ms-access access-vba
1个回答
2
投票

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

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

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

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

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

尝试像这样调用你的子:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.