我有一个组合框,可从中获取其行源MySysObjects
并显示数据库中Forms的完整列表。使用VBA从组合框中选择一个表单名称,并将其作为字符串传递给函数(因为不知道如何将该字符串转换为Form)。因此,一旦将表单的字符串值传递给函数,我现在就拥有了我想做的表单字符串变量...通常,我会使用:
Function MyFunction()
Dim frmForm as Form
Set frmForm = form("MyForm")
DoCmd.OpenForm frmForm.Name, acDesign, , , , acHidden
With frmForm
Do stuff...
End With
End Function
但!当我将字符串变量传递给函数时,例如:
Function MyFunction(strFormName as String)
Dim frmForm as Form
Set frmForm = Form(strFormName) 'THIS DOESN'T WORK
DoCmd.OpenForm frmForm.Name, acDesign, , , , acHidden
With frmForm
Do stuff...
End With
End Function
我的问题是如何使用Set
语句返回Form
对象?我既可以在表单上转换该组合框值,然后将一个Form
Object传递给该函数,也可以将组合框值转换为该函数,然后使用Set
或需要的任何值对其进行转换。我希望这是一个简单的语法问题,但是当我尝试了所有我知道的内容后,它一定是我没有尝试过的难以理解的答案!
这行有两个问题:
Set frmForm = Form(strFormName)
首先,集合的名称Forms
不是Form
。第二个是Forms
当前打开的表单的集合。因此,Forms(strFormName)
如果strFormName
当时未打开,将引发错误。
如果您只是这样做DoCmd.OpenForm strFormName, acDesign, , , , acHidden
,则无论它是否已经打开,都将在“设计视图”中打开并隐藏该窗体。然后,您可以执行操作而Set frmForm
不会触发错误。
Function MyFunction(strFormName As String)
Dim frmForm As Form
DoCmd.OpenForm strFormName, acDesign, , , , acHidden
Set frmForm = Forms(strFormName)
With frmForm
'Do stuff...
End With
End Function
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句