2013-10-24 73 views
1

社区,我目前隐藏我的标签在我的userform多页面当前标签除外。用户可以点击按钮在页面之间来回切换。一些按钮共享子例程。当用户点击一个按钮时,一旦选择了新选项卡,它将隐藏前一个选项卡。我想这是一个双重问题。如何动态获取当前多页标签值的值?

1)我怎样才能得到以前的选项卡选择值?

2)如何循环访问我的选项卡值?我的目标是测试当前标签标题或对所有其他标题的值。想想这是隐藏它们的简单方法,无论哪个页面和哪个按钮调用子例程。

现在,我只有这一个标签按钮...

Sub NewCreditSetup() 
    MultiPage1.Pages(1).Visible = True 
    MultiPage1.Value = 1 
    MultiPage1.Pages(0).Visible = False 
    //More code displaying tab...irrelevant 
End Sub 
+0

'按钮'是什么意思?你能附上一个屏幕截图来呈现你的'按钮'吗?您是否尝试过使用'网页'事件来捕捉它们并触发行动?......? –

回答

2

可以使用标签更改事件,以确定何时标签被改变,当前选项卡index存储为一个变量。然后当选项卡再次更改时,此变量中的选项卡将变成前一选项卡。

即:

Private iPrevTab As Integer 
Private iCurTab As Integer 

Private Sub MultiPage1_Change() 
    iPrevTab = iCurTab 
    iCurTab = MultiPage1.Index 

    'You can also check here what that tab is to do something with it 
    If MultiPage1.Value = MultiPage1.Pages("mySpecialPage").Index Then 
     'Go Nuts 
    End If 

End Sub 

然后,您可以遍历所有的标签和核对其名称,标题或索引。例如:

Private Sub LoopTabs() 
    Dim ii as Integer   

    for ii = 1 to MultiPage1.Pages.Count 
     If MultiPage1.Pages(ii).Index = iPrevTab Then 
      Debug.Print MultiPage1.Pages(ii).Name & " " & MultiPage1.Pages(ii).Caption 
     End If 
    Next ii 
End Sub 

它可能也值得注意的是小心显示和隐藏选项卡,因为它不常见,可能会混淆用户。尽管如此,我会留给你的。

+0

这个算得很好。感谢您在现场。我用你的逻辑去了。在这个过程中,我也尝试过这种工作。对于每个更改为页面的按钮,我都使用相同的例程来显示内容。我检查了当前页面的值是否是给客观目标页面的页面#。如果不是,我将它赋值给x。然后,我使当前页面不可见。 (所有标签都不可见,但是主页)。然后,我可以看到客观的目标网页。再次感谢。 –

+0

伟大的工作。你也可以用它来记住表单的状态。也就是说,如果用户在第二个选项卡上并关闭它,下次加载时可以将其设置为该选项卡。 – CuberChase