字符串变量的 MS Access 参考表格
MS Access Reference Form by string variable
我有一个组合框,它从 MySysObjects
获取行源并显示数据库中的完整表单列表。
使用 VBA 从组合框中选择表单名称并将其作为字符串传递给函数(因为不知道如何将该字符串转换为表单)。
所以,一旦表单的字符串值被传递给函数,我现在就有了表单的字符串变量,我想做一些事情......
我通常会使用:
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
语句来 return 一个 Form
对象?
我可以在表单上转换该组合框值并将 Form
对象传递给函数,或者将组合框值转换为函数并使用 Set
或任何需要的方法进行转换。
我希望这是一个简单的语法问题,但由于我已经尝试了我所知道的一切,它一定是我没有尝试过的难以捉摸的答案!
这一行有两个问题:
Set frmForm = Form(strFormName)
首先,集合的名称是 Forms
,而不是 Form
。
其次是 Forms
是当前打开的表单集合。所以如果strFormName
当时没有打开,Forms(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
我有一个组合框,它从 MySysObjects
获取行源并显示数据库中的完整表单列表。
使用 VBA 从组合框中选择表单名称并将其作为字符串传递给函数(因为不知道如何将该字符串转换为表单)。
所以,一旦表单的字符串值被传递给函数,我现在就有了表单的字符串变量,我想做一些事情......
我通常会使用:
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
语句来 return 一个 Form
对象?
我可以在表单上转换该组合框值并将 Form
对象传递给函数,或者将组合框值转换为函数并使用 Set
或任何需要的方法进行转换。
我希望这是一个简单的语法问题,但由于我已经尝试了我所知道的一切,它一定是我没有尝试过的难以捉摸的答案!
这一行有两个问题:
Set frmForm = Form(strFormName)
首先,集合的名称是 Forms
,而不是 Form
。
其次是 Forms
是当前打开的表单集合。所以如果strFormName
当时没有打开,Forms(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