如何动态获取当前多页标签值的值?

CBC*_*_NS 3 excel tabs vba userform multipage

社区,我目前正在用户表单多页上隐藏我的选项卡,但当前选项卡除外。用户可以单击按钮在页面之间来回切换。一些按钮共享子程序。当用户单击一个按钮时,一旦选择了新选项卡,它就会隐藏上一个选项卡。我想这是一个双重问题。

1) 如何获取上一个选项卡选择值?

2) 如何遍历我的选项卡值?我的目标是针对所有其他选项卡测试当前选项卡标题或值。认为这将是一种隐藏它们的简单方法,无论哪个页面和哪个按钮调用子例程。

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

Sub NewCreditSetup()
    MultiPage1.Pages(1).Visible = True
    MultiPage1.Value = 1
    MultiPage1.Pages(0).Visible = False
    //More code displaying tab...irrelevant
End Sub  
Run Code Online (Sandbox Code Playgroud)

Cub*_*ase 5

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

IE:

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
Run Code Online (Sandbox Code Playgroud)

然后,您可以遍历所有选项卡并检查它们的名称、标题或索引。例如:

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
Run Code Online (Sandbox Code Playgroud)

可能还值得注意的是要小心地显示和隐藏选项卡,因为它不常见并且可能会使用户感到困惑。不过,我会把它留给你。