7

我想要实现的是组合框(Combo_sf)选择来指示子表单控件(sf_record)中的表单我有大约10个表单,它们的名称在组合框数据中。我是 VBA 新手,不确定我的方法是否正确:

Private Sub Combo_sf_AfterUpdate()
    Dim strLoadTable As String  

    strLoadTable = "Form." & Me.Combo_sf.Value
    MsgBox strLoadTable

    Forms![frm_Mnu_Manage Configuration Settings]!sf_record.Form.SourceObject = strLoadTable

End Sub

我已将其放置在组合框的更新后事件中,但是当我进行选择时,表单中没有任何反应。我是在接近这个权利还是另一种方式会更好?

4

3 回答 3

5

你的方法应该有效。我在我的主窗体上放置了一个名为的组合框,并在其事件处理程序cbxSubform中添加了一行代码......AfterUpdate()

Private Sub cbxSubform_AfterUpdate()
Me.mySubform.SourceObject = Me.cbxSubform.Value
End Sub

...并更改组合框中的选择会立即切换子表单。您确定AfterUpdate()您的组合框的代码实际上正在触发吗?(您可以添加 aMsgBox或 aDebug.Print进行检查。)

于 2013-05-02T12:25:50.550 回答
4

可能是这条线让你绊倒:

strLoadTable = "Form." & Me.Combo_sf.Value

你的表单对象叫什么?如果您的表单被调用Form.myTableName,则可能是.正在将其丢弃,请尝试将其设置为名称中没有点的表单。

于 2013-05-02T12:42:06.610 回答
4

在这一行中,代码似乎试图更改对象的SourceObject属性Form

Forms![frm_Mnu_Manage Configuration Settings]!sf_record.Form.SourceObject = strLoadTable

但是,SourceObject它是子窗体控件的属性,而不是该控件中包含的窗体。因此,如果子表单控件命名为sf_record,请这样做。

Forms![frm_Mnu_Manage Configuration Settings]!sf_record.SourceObject = strLoadTable

此外,如果更新后过程从 运行[frm_Mnu_Manage Configuration Settings],您可以使用Me参考表格。

Me!sf_record.SourceObject = strLoadTable

最后,如果Me.Combo_sf.Value是表单的名称,则不需要在其名称前加上“表单”。. 它在我的测试中以任何一种方式工作,但我会省略“表格”。.

strLoadTable = Me.Combo_sf.Value
于 2013-05-02T13:18:21.237 回答