Ms access 在Access VBA中声明和设置表单变量

Ms access 在Access VBA中声明和设置表单变量,ms-access,vba,Ms Access,Vba,它看起来很简单,但我似乎找不到正确的语法。我希望在Access 2013应用程序中为未打开的表单创建一个表单变量,以便将表单对象传递给一系列方法,而不是传递表单的单独属性 以下是我一直在尝试的内容,但我遇到了运行时错误“2465”。Microsoft Access找不到表达式中引用的字段“frmSuppliers” Private Sub cmdSuppliers_Click() Dim frm As Form Set frm = Form("frmSuppliers")

它看起来很简单,但我似乎找不到正确的语法。我希望在Access 2013应用程序中为未打开的表单创建一个表单变量,以便将表单对象传递给一系列方法,而不是传递表单的单独属性

以下是我一直在尝试的内容,但我遇到了运行时错误“2465”。Microsoft Access找不到表达式中引用的字段“frmSuppliers”

Private Sub cmdSuppliers_Click()
    Dim frm As Form
    Set frm = Form("frmSuppliers")

    Debug.Print frm.Name
您引用了表单集合,但将其改为单数而不是复数


您引用了表单集合,但将其改为单数而非复数。

谢谢Sorceri和Christopher。我似乎缺少对表单集合的错误引用的编译,并且在设置变量之前没有打开表单。此代码似乎起到了作用:

Private Sub cmdSuppliers_Click()
    Dim frm As Form

    DoCmd.OpenForm "frmSuppliers", acNormal, , , , acHidden
    Set frm = Forms("frmSuppliers")

    Debug.Print frm.Name

    DoCmd.Close acForm, frm.Name
    Set frm = Nothing

End Sub

谢谢Sorceri和Christopher。我似乎错过了对表单集合的错误引用的编译,并且在设置变量之前没有打开表单。这段代码似乎起到了作用:

Private Sub cmdSuppliers_Click()
    Dim frm As Form

    DoCmd.OpenForm "frmSuppliers", acNormal, , , , acHidden
    Set frm = Forms("frmSuppliers")

    Debug.Print frm.Name

    DoCmd.Close acForm, frm.Name
    Set frm = Nothing

End Sub

您必须打开表单才能将其初始化并添加到数据库的forms集合您必须打开表单才能将其初始化并添加到数据库的forms集合