以编程方式在Ms Access中选择NavigationControl选项卡

时间:2019-03-21 16:28:55

标签: ms-access access-vba

当前,我们使用此命令切换到 NavigationControl

DoCmd.BrowseTo acBrowseToForm, TabToOpen, Me.name & ".NavigationSubform"

如果所选的选项卡/按钮具有唯一的NavigationTargetName,则此方法很好。如果我们有两个或多个具有相同目标表单名称的选项卡,则无法打开特定的选项卡。 -具有匹配的targetName的第一个标签被打开-

TabATabC具有相同的targetFormName X 如果我们使用以下命令

DoCmd.BrowseTo acBrowseToForm, X, Me.name & ".NavigationSubform"

TabA已激活。

问题:我们如何激活TabC?

我们尝试做NavigationForm.TabC.SetFocusNavigationForm.navBarTop.Tabs(9).SetFocus 没有运气。

.SelectedTab属性是只读的。

关于为什么我们拥有相同的targetFormName的原因:我们使用一种形式,但是动态SQL取决于所选的选项卡,以减少具有x个相同形式的不同数据状态的数据。

非常感谢

1 个答案:

答案 0 :(得分:1)

遇到相同问题后,我找到了解决方法。

使用TabIndex属性将要打开的导航按钮临时移到开头,即TabIndex =0。然后触发BrowseTo命令,然后将TabIndex设置回原始值。对我来说,这有效,并且没有负面的视觉效果或类似效果。

将您的示例与TabC一起使用,结果将如下所示:

NavigationForm.TabC.TabIndex = 0
DoCmd.BrowseTo acBrowseToForm, X, Me.name & ".NavigationSubform"
NavigationForm.TabC.TabIndex = 2

当然,这可以变得更加动态,例如通过从选项卡名称到索引位置的映射,然后对所有选项卡使用相同的代码,并结合该映射。