2017-05-26 93 views
1

以下代码可以关闭Access导航窗格。MS-Access导航窗格是否可见?

DoCmd.NavigateTo "acNavigationCategoryObjectType" 
DoCmd.RunCommand acCmdWindowHide 

但问题是,如果导航窗格已经关闭,则该acCmdWindowHide只会隐藏任何其他对象(即表,表),它是开放的。 我在我的代码中使用了DoCmd.TransferDatabase,并且在执行此操作时,导航窗格有时会打开。如果出现有关数据导入的警告消息并且用户单击取消,则可能会发生这种情况。为了确保用户没有看到窗格我想隐藏它,但是如果它已经隐藏,那么没有什么可以隐藏的,但上面的命令只是隐藏了我的窗体,这不是我想要的。

线

DoCmd.NavigateTo "acNavigationCategoryObjectType" 

始终执行,不返回任何东西。如果没有导航窗格导航到,它不会返回错误。

我的问题是:如何确定导航窗格当前是否打开,以便我知道必须关闭导航窗格。 或者我如何确保我关闭了导航窗格,但如果使用上面的代码,没有其他对象?

回答

1

This forum thread提示:

Public Function HideIt() 

    ' Employee is just any existing table 
    DoCmd.SelectObject acTable, "Employee", True 
    If Application.CurrentObjectName = "Employee" Then DoCmd.RunCommand acCmdWindowHide 

End Function 
+0

感谢,这对我的作品。但是有一个例外:如果任何过滤器仅用于在导航窗格中仅显示一些对象,并且此过滤器不允许CurrentObjectName,则上述代码不起作用,因为具有该名称的对象不能被选中。示例:“客户”过滤器用于仅显示名称类似客户的对象。如果上面的代码尝试选择即使导航窗格打开也无法选择的Employee,因为过滤器不允许它。隐藏导航窗格后,此过滤器不会消失。我的情况没有问题。 – Edgar