子窗体Tab控件隐藏失败求助:On Click事件执行报错
解决Access子窗体Tab页隐藏报错的方案
核心问题:控件引用路径错误
主窗体中直接用Page16.Visible = False能生效,是因为代码运行在主窗体上下文,可直接访问当前窗体的Tab页。但子窗体的控件属于子窗体的Form对象,必须通过主窗体→子窗体控件→子窗体Form对象→Tab控件→Tab页的完整路径引用,否则会因找不到对象触发报错。
具体解决步骤
1. 确认关键控件名称
- 打开窗体设计视图,查看主窗体上承载子窗体的控件名称(不是子窗体本身的名称,是主窗体上的容器控件名)
- 查看子窗体中Tab控件的名称(比如默认
TabCtl0,或你自定义的名称) - 确认要隐藏的Tab页的名称或索引(索引从0开始计数)
2. 使用正确的引用代码
根据场景选择对应写法:
场景1:主窗体的命令按钮触发隐藏
假设主窗体上的子窗体控件名为SubFormContainer,子窗体中的Tab控件名为MainTabCtl,要隐藏的Tab页名为SubPage2,代码如下:
Me.SubFormContainer.Form.MainTabCtl.Pages("SubPage2").Visible = False
如果用索引(比如第2个Tab页,索引为1):
Me.SubFormContainer.Form.MainTabCtl.Pages(1).Visible = False
场景2:子窗体内部的命令按钮触发隐藏
直接在子窗体的按钮事件中引用自身控件即可:
Me.MainTabCtl.Pages("SubPage2").Visible = False
3. 排查常见坑点
- 别混淆子窗体控件名和子窗体对象名:必须用主窗体上的容器控件名来访问内部的Form对象
- 检查名称拼写:设计视图右键控件→属性,确认Tab控件、Tab页、子窗体容器的名称无拼写或大小写错误
- 确保代码写在正确的事件中:主窗体按钮的代码要放在主窗体的模块里,子窗体按钮的代码放在子窗体模块里
内容的提问来源于stack exchange,提问作者Dennis
相关产品推荐
相关产品推荐

