2

我试图在 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 接受它的方式编写它。我收到“对象变量或未设置块变量”错误。

4

2 回答 2

5

Tinkering around in the VBA editor leads me to suspect that something like this might work:

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
于 2013-05-20T14:44:47.030 回答
2

你有 ...

Dim frm As Form

...但后来您尝试使用frm而不先将其设置为表单实例。这就是为什么您会收到有关未设置对象变量的错误。

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

如果strSubForm是子表单控件,这应该可以工作...

Forms(strForm).Controls(strSubForm).Form.Controls(strField) = Me.Calendar0.Value
于 2013-05-20T14:56:53.677 回答