Access中VBA隐藏导航窗格失效:加载表单时误隐藏表单
解决Access加载表单时隐藏导航窗格误隐藏表单的问题
问题核心:Form_Load事件触发时,表单尚未完全完成加载流程,焦点默认落在表单窗口上,此时执行RunCommand acCmdWindowHide会把当前焦点所在的表单窗口隐藏,而非目标导航窗格。
可行方案1:改用Form_Open事件
将触发逻辑移到Form_Open事件中,此时导航窗格仍处于激活状态,能确保命令作用对象正确:
Private Sub Form_Open(Cancel As Integer) Call Main End Sub Sub Main() DoCmd.NavigateTo "acNavigationCategoryObjectType" DoCmd.RunCommand acCmdWindowHide End Sub
可行方案2:添加延迟执行(适配特殊场景)
如果Form_Open方案仍无效,可通过Timer控件延迟执行,给导航窗格足够的定位时间:
- 在表单上添加一个Timer控件(命名为
Timer1),设置其Interval属性为100(即0.1秒) - 编写如下代码:
Private Sub Form_Load() Timer1.Enabled = True End Sub Private Sub Timer1_Timer() Timer1.Enabled = False ' 仅执行一次 DoCmd.NavigateTo "acNavigationCategoryObjectType" DoCmd.RunCommand acCmdWindowHide End Sub
额外验证点
- 若你的导航窗格使用了自定义分类,需将
acNavigationCategoryObjectType替换为对应分类名称;也可直接用acNavigationCategoryAllObjects定位到所有对象分类,兼容性更强。
内容的提问来源于stack exchange,提问作者VBAnSheeeid
相关产品推荐
相关产品推荐

