我正在尝试在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接受它的方式编写它。我得到一个“对象变量或没有设置块变量”错误。
答案 0 :(得分:5)
在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
答案 1 :(得分:2)
你有......
Dim frm As Form
...但稍后您尝试使用frm
而不先将其设置为表单实例。这就是为什么你得到关于未设置的对象变量的错误。
但还有另一个问题可能在等着你。表单可以包含子表单控件,该控件的名称可能与其包含的表单的名称不同。确保您使用的是子表单 control 的名称。
如果strSubForm
是子窗体控件,那么这应该有用......
Forms(strForm).Controls(strSubForm).Form.Controls(strField) = Me.Calendar0.Value