当前,我们使用此命令切换到 NavigationControl
DoCmd.BrowseTo acBrowseToForm, TabToOpen, Me.name & ".NavigationSubform"
如果所选的选项卡/按钮具有唯一的NavigationTargetName,则此方法很好。如果我们有两个或多个具有相同目标表单名称的选项卡,则无法打开特定的选项卡。 -具有匹配的targetName的第一个标签被打开-。
即TabA
和TabC
具有相同的targetFormName X
如果我们使用以下命令
DoCmd.BrowseTo acBrowseToForm, X, Me.name & ".NavigationSubform"
TabA已激活。
问题:我们如何激活TabC?
我们尝试做NavigationForm.TabC.SetFocus
和
NavigationForm.navBarTop.Tabs(9).SetFocus
没有运气。
.SelectedTab
属性是只读的。
关于为什么我们拥有相同的targetFormName的原因:我们使用一种形式,但是动态SQL取决于所选的选项卡,以减少具有x个相同形式的不同数据状态的数据。
非常感谢
答案 0 :(得分:1)
遇到相同问题后,我找到了解决方法。
使用TabIndex属性将要打开的导航按钮临时移到开头,即TabIndex =0。然后触发BrowseTo命令,然后将TabIndex设置回原始值。对我来说,这有效,并且没有负面的视觉效果或类似效果。
将您的示例与TabC一起使用,结果将如下所示:
NavigationForm.TabC.TabIndex = 0
DoCmd.BrowseTo acBrowseToForm, X, Me.name & ".NavigationSubform"
NavigationForm.TabC.TabIndex = 2
当然,这可以变得更加动态,例如通过从选项卡名称到索引位置的映射,然后对所有选项卡使用相同的代码,并结合该映射。