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

Posted

技术标签:

【中文标题】尝试使用变量名访问表单和子表单时收到无效的限定符错误?【英文标题】:Receiving Invalid Qualifier error when attempting to access a form and subform using variable names? 【发布时间】:2018-03-14 01:59:00 【问题描述】:

我正在尝试执行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

我已经通过其.name 属性打印出myFormmySubForm 的名称,它似乎显示了每个名称的正确名称。

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

谢谢!

【问题讨论】:

【参考方案1】:

删除那些.name 的东西。他们不应该在那里:

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

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

With mySubForm.Form.RecordsetClone
    ...
End With

【讨论】:

以上是关于尝试使用变量名访问表单和子表单时收到无效的限定符错误?的主要内容,如果未能解决你的问题,请参考以下文章

我在尝试打开/显示新表单时有时会收到 ArgumentException 参数无效,为啥?

使用表单和子表单访问 VBA 代码格式更新表

CSRF 令牌无效。请尝试重新提交表单

bassistance jquery验证插件有问题,表单无效时提交

访问表单和子表单

Django Tempus Dominus:设置格式会使表单无效