【问题标题】:Can we place a Frame Control inside a Tabstrip Control?我们可以在 Tabstrip 控件中放置一个框架控件吗?
【发布时间】:2016-08-26 17:29:43
【问题描述】:

下面的代码给了我一个错误。是否可以在 tabstrip 控件中创建 Frame ?如果没有,还有其他选择吗?

    Dim NewFrame As MSForms.Frame
    Dim NewTabStrip As MSForms.TabStrip
    Set NewTabStrip = Controls.Add("Forms.TabStrip.1")
    Set NewFrame = NewTabStrip.Controls.Add("Forms.TabStrip.1")

【问题讨论】:

  • 你想用它实现什么?框架本质上只是多个按钮、组合框、列表框等的容器。既然您已经有一个容器(父表单)甚至是 TabStrip,那么在父表单中使用另一个表单有什么用?如果您详细说明您想要实现的目标,那么我们可能会更好地为您提供帮助。

标签: vba userform


【解决方案1】:

Tab strip 的使用不同于例如Multi page 因为它不是控件容器,所以代码 NewTabstrip.Controls.Add... 失败。 Tab strip 没有任何控件,但它维护一组User form 的控件。


欲了解更多信息,请参阅:How to Use the TabStrip Control in a UserForm

这里:How to Use the MultiPage Control in a UserForm 是有关 Multipage 的信息。它是控件的容器,页面有自己的控件,所以也许这就是你要找的。​​p>


一个如何使用 Tabstrip 控件根据选定的 Tab 更改 NewFrame 的颜色的示例。 (使用示例创建新的用户表单,命令按钮名为AddTabstrip HTH

Option Explicit

Private WithEvents NewTabStrip  As TabStrip
Private NewFrame As MSForms.Frame

Private Sub AddTabstrip_Click()
    If Not NewTabStrip Is Nothing Then
        MsgBox "Tabstrip was allready added.", vbExclamation
        Exit Sub
    End If

    Set NewTabStrip = Me.Controls.Add("Forms.TabStrip.1")
    With NewTabStrip
        .Height = Me.Height - 90
        .Width = Me.Width - 30
        .Top = 15
        .Left = 15
    End With
    NewTabStrip.Tabs(0).Caption = "Tab 1"
    NewTabStrip.Tabs(1).Caption = "Tab 2"
    NewTabStrip.Tabs.Add "Tab3", "Tab 3"

    Set NewFrame = Me.Controls.Add("Forms.Frame.1")
    With NewFrame
        .Height = NewTabStrip.Height - 30
        .Width = NewTabStrip.Width - 30
        .Top = NewTabStrip.Top + 20
        .Left = NewTabStrip.Left + 15
    End With

    Call NewTabStripChanged
End Sub

Private Sub NewTabStrip_Change()
   Call NewTabStripChanged
End Sub

Private Sub NewTabStripChanged()
    ' This procedure runs when the TabStrip control named NewTabStrip
    ' changes. This procedure will change the color of the NewFrame
    ' control based on which tab the user selects.
    Dim i As Integer
    i = NewTabStrip.SelectedItem.Index
    Select Case i
        Case 0
            ' First tab selected, change color to red.
            NewFrame.BackColor = RGB(255, 0, 0)
        Case 1
            ' Second tab selected, change color to green.
            NewFrame.BackColor = RGB(0, 255, 0)
        Case 2
            ' Third tab selected, change color to blue.
            NewFrame.BackColor = RGB(0, 0, 255)
    End Select
End Sub

【讨论】:

    猜你喜欢
    • 2016-01-04
    • 1970-01-01
    • 2012-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-23
    • 1970-01-01
    相关资源
    最近更新 更多