尝试使用变量名称访问表单和子表单时收到无效限定符错误?

时间:2018-03-14 01:59:00

标签: vba access-vba

我正在尝试执行RecordsetClone,但我一直在

  

无效限定符

编译错误。

目前我有一个表单,在其中我有一个包含Datasheet的子表单。我创建了一个函数来传递表单的名称以及子表单的名称:

Public Sub testModel(nameOfForm As String, nameOfSubform As String)
    Dim myForm As Access.Form
    Dim mySubForm As Access.SubForm

    If formIsOpen(nameOfForm) = False Then
        DoCmd.OpenForm nameOfForm, acNormal
    End If

    Set myForm = Forms(nameOfForm)
    Set mySubForm = myForm.Controls(nameOfSubform )

    With Forms!myForm.name.mySubForm.name.Form.RecordsetClone
       ...
    End With

End Sub

为表单和子表单使用变量的原因是因为不同的表单和子表单将使用此函数。

错误肯定与语法Forms!myForm.name.mySubForm .name.Form.RecordsetClone有关,我非常有信心它是错误的。

我也试过了:

Forms!myForm.name.mySubForm.Form.RecordsetClone

如果我替换它,直接使用表格和子表格名称,就没有问题,即:

Forms!frmParentForm.frmChildSubForm.Form.RecordsetClone

我已通过其myForm属性打印出mySubForm.name的名称,并且它似乎显示每个名称的正确名称。

有人能指出我在正确的方向上如何使用变量名来代替我的表单和子表单的实际名称吗?正确的语法应该是什么?

谢谢!

1 个答案:

答案 0 :(得分:1)

删除.name件事。他们不应该在那里:

With Forms!myForm.mySubForm.Form.RecordsetClone
   ...
End With

如果您要使用声明的子表单变量,那就更简单了:

With mySubForm.Form.RecordsetClone
    ...
End With