2017-12-27 470 views
0

我正试图将一个窗体/子窗体名称传递给一个函数,但没有成功。该功能通过子窗体上的每个.Control控制,并执行一组简单的查询操作。我的代码正常工作与表单/子表单名称硬编码;我正在寻找更通用的方法。访问VBA:将窗体/子窗体名称传递给函数?

在函数调用中获取类型不匹配错误,使用和不使用引号。

实施例:

'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 

正确的语法任何建议传递形式/子窗体的信息?

谢谢!

+1

_“在函数调用中获取类型不匹配错误”_通常最好也引用它。 –

回答

2

你的子调用各种奇怪的:

您的错误的可能原因是引号。您当前将字符串传递给包含"forms![someForm]![someSubForm]"

的字符串此外,当您没有收到返回值时(因此从不在调用子时),不应使用括号。

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

而且你可能想通过表单对象,而不是窗体控件对象

试着打电话给你分这样的:

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

(从未有过的一行代码这么多评论)

+0

对不起,这个例子是一个很弱的尝试来说明我的意图而不会让细节混乱。 :) –

+0

Erik,您的建议“AuditChanges形式![someForm]![someSubForm] .Form”(不含引号)根据需要工作。 - 谢谢 –

+0

好。我有时候有点批评,大约一半的观点('call',括号)可能不是任何错误的原因。一个最小的例子往往很难,魔鬼的细节:) –

相关问题