【发布时间】:2012-06-10 16:27:57
【问题描述】:
使用表单名称创建封闭表单的新表单实例的代码
我想用一个变量替换长的 Select Case 列表。
在 Access 2010 中,我有一个 VBA 函数,当给定一个包含表单名称的字符串时,它会打开一个新的表单实例。通过将表单变量“frm”添加到集合中:
mcolFormInstances.Add Item:=frm, Key:=CStr(frm.Hwnd)
我想打开“frm”的唯一方法是使用我手动输入的 Select Case 语句。
Select Case strFormName
Case "frmCustomer"
Set frm = New Form_frmCustomer
Case "frmProduct"
Set frm = New Form_frmProduct
... etc ... !
End Select
我希望它自动完成,有点像这样(虽然这不起作用):
Set frm = New Eval("Form_" & strFormName)
或者通过一些代码:
For Each obj In CurrentProject.AllForms 'or AllModules, neither work
If obj.Name = strFormName Then
Set FormObject = obj.AccessClassObject 'or something
End If
Next
Set frm = New FormObject
我只是想避免列出我项目中的每一个表单,并且必须在添加新表单时更新列表。
【问题讨论】:
-
2012 年您从哪里获得访问权限?
-
错字,我的错。不过,我听说 Office 2012 的测试版应该会在一个月内发布。
-
This approach 允许将 VBA 代码字符串评估为对象,并且可能被采用来解决这个问题。
标签: ms-access instance vba ms-access-2010