0

在启动我们的 vba-access-application (由启动 VBA 功能的 VBE 插件完成)时,我们使用以下代码关闭导航窗格:

DoCmd.SelectObject acMacro, "Autoexec", True
DoCmd.RunCommand acCmdWindowHide

当我开始使用导航窗格内的内置搜索/过滤器栏时,当宏“Autoexec”不可见时,此代码不再起作用。所以我把它改成:

DoCmd.NavigateTo "acNavigationCategoryObjectType"
DoCmd.RunCommand acCmdWindowHide

只要还有任何搜索结果,这似乎就可以正常工作。当我在搜索栏(=过滤器)内写“没有那个名字的东西”时,导航窗格不会关闭。

即使没有可见的搜索结果,有人知道关闭导航窗格的方法吗?

4

2 回答 2

2
DoCmd.NavigateTo "acNavigationCategoryModifiedDate"
DoCmd.NavigateTo "acNavigationCategoryObjectType"
DoCmd.RunCommand acCmdWindowHide

为了使命令DoCmd.RunCommand acCmdWindowHide成功关闭导航窗格,导航窗格必须具有焦点。但要让 Access 窗口获得焦点,窗口内的控件必须拥有焦点。事实证明,该NavigateTo命令永远不会将焦点放在“搜索”文本框中,因此如果搜索结果为空白且没有可供选择的内容,则焦点不会更改为导航窗格(即使从技术上讲,导航窗格的选定组可能有已更新。)

如果您使用导航窗格的时间足够长,您会发现导航搜索结果和文本框在最高级别的导航类别之间切换时会被重置。因此我建议的代码...它在两个导航类别之间更改,以便在该操作期间清除搜索结果,以便导航窗口最终在其列出的对象之一最终获得焦点时获得焦点。

(真的,NavigateTo在这种情况下使用命令只是将焦点放在导航窗格上的愚蠢技巧。这只是 Access 界面的另一个明显缺陷,即没有用于控制导航窗格的直接命令/对象。)

于 2019-03-11T16:22:20.200 回答
1

我建议您不要编写任何代码,而只需使用内置的 Access 设置来防止(隐藏)导航窗格。

所以工作,然后你在启动过程中按住shift键。(shift钥匙旁通)。

shift键发展舞蹈:

您会发现无需退出即可启动 + 开发大量代码并处理表单/报告。但是,您仍然会完成shift关键启动绕过。原因当然是在启动时,您的代码可能会隐藏功能区。(或启动自定义)。启动表单也是如此——它可能会运行一堆代码、要求登录、检查表格链接。

然后是您拥有的启动设置。您可能有一个启动表单(您不希望它运行)。您可能已取消选中显示导航窗格,但您在开发过程中需要此选项。如果你有一个定制的丝带呢?(再次在工具→选项中进行设置)。并使用特殊键——再次对用户关闭,但对开发人员是必需的。

然后是自动键宏。这用于重新调整F1密钥的用途(帮助 - 禁用或启动您自己的自定义帮助 - 例如 pdf 或 word 文件)。

以及任何重新用途,例如f12弹出一些自定义搜索框等。

因此,所有这些自定义设置都将是相当大量的设置。许多将来自工具→选项(主窗体、功能区等)。有些将来自您的代码。

您真的(但真的)无法编写出所有这些设置,而且有些设置无论如何都需要重新启动。在典型的应用程序中,确实会为您的用户而不是作为开发人员的您更改很多设置。

因此,在启动时按住shift键。这不仅会阻止您的启动代码运行,还会阻止您的启动设置 - 甚至是导航窗格之类的东西,尤其是工具→设置区域(shift键忽略大部分设置)。

所以在一天的发展中,我会shift整天做这个关键的舞蹈。但是,您可以在这里使用两个技巧和捷径,将这种退出 + 重新进入减至沉闷的咆哮最小化。一个很好的选择是始终在 QAT 上放置一个自定义的紧凑型修复按钮。因此,QAT 按钮现在只需单击鼠标即可随时使用。因此,如果我在设计模式下处理表单,切换到视图模式通常就足够了,但在那些我需要完全退出 + 重新开始测试的情况下?我什至不保存表单,我只是快速简单地单击那个 QAT compact + 修复按钮。一键点击!(可能必须回答是才能保存)。此时,应用程序将重新启动,而无需您退出。你不按住shift键 — 这样您的所有启动设置都会运行。您现在切换到用户测试模式,只需单击一次鼠标。

这使您可以轻松地从开发人员模式切换到“用户测试”模式,并且只需单击一下鼠标。因此,您现在可以运行您的应用程序,就像最终用户看到的那样。

要返回开发人员模式,只需单击自定义 C+R 按钮即可。(而你按住shift键)。这将使您回到开发人员模式(您的导航窗格、功能键、所有内容和所有这些启动设置现在都被忽略了——您可以自由地进行开发,而不会遇到所有这些麻烦和问题)。完全开放使用 Access,就好像根本没有发生任何设置一样。

如前所述,您可以通过 c+r 启动,并且无论如何您都需要 + 想要在一天中多次执行此操作。如前所述,对于很多更改,您不必进行此翻转,并且可以保持开发人员模式。当然,在某些情况下,您的“用户模式”会真正锁定访问权限,因此您必须退出(您失去了 QAT 技巧)。因此,您通常能够从开发人员跳到用户,但不能以其他方式返回。同样,您不必一直在用户模式下运行 + 测试所有内容,但通常一些全局变量、启动、密码等内容会将这个问题强加给您。

那么,在这种情况下呢?

我快速点击alt+f4退出应用程序。此时,accDB 文件仍应在 Windows 资源管理器中突出显示。因此,现在只需快速点击该enter键即可重新启动 accDB。如果想要“用户模式”,那么就不要按住shift键。做一些测试,现在alt+ f4,然后简单地快速点击该enter键(我们回到 windows 文件探索,accDB 文件突出显示)。但是,这一次您将按住该shift键,因此您现在回到开发者模式。通常,我会在测试之前调用我的启动代码。

Ctrl+ g(跳转到调试窗口),输入 MyStartup

(假设 MyStartup 是您的第一个启动例程,它会完成所有设置,然后启动主窗体 - 所以在某些应用程序中,我不使用内置的启动窗体设置,而是使用 autoexec 宏来调用我的主窗体启动例程 (MyStartup)

因此,在很多情况下,我不必退出 Access 即可进入测试模式。

当然,可以使用、查看和开发一些报告和表单,而无需使用所有“用户”启动代码内容完全运行应用程序。

因此,某些报告可能会起作用,但同样可能需要打开某种表格才能使其起作用。(或者可能需要系统范围的功能和公司名称设置+在您的启动代码中设置)。因此,您需要退出的程度与能够进行“某些”开发的程度之间通常会有所不同。

所以我会说,我经常被迫退出+重新加载应用程序(alt+ f4,点击enter键)。因此,退出并重新加载/重新进入 Access 只需要 2 个组合键。

在一天结束时,如果您不能使用 QAT 快捷方式建议,那么您将在一天中多次退出 + 重新输入。如前所述,对于大量表单等,您可以在视图和设计模式之间切换。(但是您当然可以运行访问权限,而不会启动阻止开发人员工作的所有垃圾内容)。

The simple matter is at the end of the day, there is going to be FAR MORE settings then just the nav pane (or lack of) that going to mess up your development process. So, the above shift key dance and QAT suggestion ALSO solves all of the OTHER many settings, and does so without you having to write one line of code to deal with this issue.

Of course, once all is working, then you will compile the application down to an accDE. And then apply the shift key by-pass code to that to lock the application further down.

于 2019-03-14T00:14:43.953 回答