首页 > 解决方案 > VBa - 用户窗体在两个页面上显示相同的组合框

问题描述

所以我有一个多页,我希望在两个页面上显示相同的按钮。我可以把它放在外面,但是多页的边框太丑了,所以我试着把所有的东西都放在页面上。不幸的是,您不能用相同的名称命名项目(例如组合框)。是否有解决方法来删除边框并仅显示页面名称或在两页上的项目上具有相同的名称?

在此处输入图像描述

在此处输入图像描述

标签: vbauserformmultipage

解决方案


对这个目标有一些乐趣。

考虑这个带有 TabStrip、2 帧和一些其他控件的编辑器中的用户窗体。
框架由 、 等命名Frame0Frame1假设
Frame0位置引用,并且在显示 UserForm 时首先显示,下面的代码将是您想要的。
用户窗体编辑器

代码:

Option Explicit

Private Sub TabStrip1_Change()
    Dim i As Long, lActiveTabIndex As Long
    lActiveTabIndex = Me.TabStrip1.Value
    For i = 0 To Me.TabStrip1.Tabs.Count - 1
        Me.Controls("Frame" & i).Visible = (i = lActiveTabIndex)
    Next i
End Sub

Private Sub UserForm_Initialize()
    Dim i As Long
    With Me
        .Height = 288 ' Adjust to your desired height
        ' Align all FrameX top/left to same as Frame0, delete Caption and SpecialEffect
        For i = 0 To Me.TabStrip1.Tabs.Count - 1
            With Me.Controls("Frame" & i)
                .Top = Me.Frame0.Top
                .Left = Me.Frame0.Left
                .Caption = ""
                .SpecialEffect = fmSpecialEffectFlat
            End With
        Next i
    End With
    ' Ensure frame for first tab is displayed
    TabStrip1_Change
End Sub

用户表单首次加载(没有保存屏幕截图,也没有保存工作簿,抱歉)。

单击下一个选项卡:
单击下一个选项卡


推荐阅读