Ms access 是否可以将字符串转换为对象引用?

Ms access 是否可以将字符串转换为对象引用?,ms-access,ms-access-2007,vba,Ms Access,Ms Access 2007,Vba,我正在尝试在Access 2K7数据库中做一些更通用的东西。我有一个表单,我正在使用OpenArgs传递一些信息。我正在传递表单名、子表单名和字段名,以便可以填充字段 我在“重建”对字段的引用时遇到了麻烦。我尝试了以下方法,但VBA不喜欢: Dim strForm, strField, strSubForm As String Dim frm As Form strForm = Left(Me.OpenArgs, InStr(Me.OpenArgs, "|") - 1) Brk1 = Mid(

我正在尝试在Access 2K7数据库中做一些更通用的东西。我有一个表单,我正在使用OpenArgs传递一些信息。我正在传递表单名、子表单名和字段名,以便可以填充字段

我在“重建”对字段的引用时遇到了麻烦。我尝试了以下方法,但VBA不喜欢:

Dim strForm, strField, strSubForm As String
Dim frm As Form

strForm = Left(Me.OpenArgs, InStr(Me.OpenArgs, "|") - 1)
Brk1 = Mid(Me.OpenArgs, InStr(Me.OpenArgs, "|") + 1)
strField = Left(Brk1, InStr(Brk1, "|") - 1)
strSubForm = Mid(Brk1, InStr(Brk1, "|") + 1)

X = "Forms!" & strForm
Y = X & "!" & strSubForm
Z = Y & "!" & strField
frm(Z) = Me.Calendar0.Value

此练习的目的是将日历的值(Me.Calendar0.value)传递给子窗体(Forms!strForm!strSubForm!strField)上的字段。我只是想不出如何以VBA可以接受的方式编写它。我收到一个“对象变量或块变量未设置”错误。

在VBA编辑器中进行修补会让我怀疑类似的操作可能会起作用:

Dim sbf As SubForm
Set frm = Forms(strForm)
Set sbf = frm.Controls(strSubForm)
sbf.Controls(strField).Value = me.Calendar0.Value
Set sbf = Nothing
Set frm = Nothing
你有

Dim frm As Form
。。。但是稍后您尝试使用
frm
,而不首先将其设置为表单实例。这就是为什么会出现对象变量未设置的错误

但还有另一个问题可能会困扰你。表单可以包含子表单控件,并且该控件的名称可能与其包含的表单的名称不同。确保使用的是子窗体控件的名称

如果
strSubForm
是子窗体控件,则应该可以

Forms(strForm).Controls(strSubForm).Form.Controls(strField) = Me.Calendar0.Value