【问题标题】:How to dynamically get the value of current multipage tab value?如何动态获取当前多页标签值的值?
【发布时间】:2013-10-24 18:15:02
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • “按钮”是什么意思?你能附上一个展示你的“按钮”的屏幕截图吗?您是否尝试过使用“页面”事件来捕获它们并触发操作...?

标签: excel vba tabs userform multipage


【解决方案1】:

您可以使用选项卡更改事件来确定何时更改选项卡并将当前选项卡index 存储为变量。那么当tab再次改变时,这个变量中的tab就变成了之前的tab。

即:

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

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

【讨论】:

  • 效果很好。感谢您的网站。我用你的逻辑去了。在此过程中,我还尝试了哪种方法有效。对于更改为页面的每个按钮,我都使用相同的例程来显示内容。我检查了当前页面的值是否是给目标目标页面的页面#。如果不是,我将其分配给值 x。然后我使当前页面不可见。 (除主页外,所有选项卡均不可见)。然后,我使目标目标页面可见。再次感谢。
  • 伟大的工作。您也可以使用它来记住表单的状态。即,如果用户在第二个选项卡上并关闭它,则下次加载时您可以将其设置为该选项卡。
【解决方案2】:

我认为这会对你有所帮助。

Dim m As String
    m = MultiPage1.SelectedItem.Caption
MsgBox m

【讨论】:

    猜你喜欢
    • 2014-03-22
    • 2013-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-04
    • 2015-03-01
    • 1970-01-01
    相关资源
    最近更新 更多