2016-05-02 9 views
1

Der folgende Code gibt mir einen Fehler. Ist es möglich, einen Rahmen innerhalb eines Tabstrip-Steuerelements zu erstellen? Wenn nicht, gibt es eine Alternative dazu?Können wir ein Frame Control in einem Tabstrip Control platzieren?

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") 
+1

Was wollen Sie damit erreichen? Ein Rahmen ist im Wesentlichen nur ein Container für mehrere Schaltflächen, Kombinationsfelder, Listenfelder usw. Da Sie bereits einen Container (das übergeordnete Formular) und sogar einen TabStrip haben, was würde dann noch ein anderes Formular im übergeordneten Formular verwenden? Wenn Sie ein wenig mehr auf das, was Sie erreichen wollen, eingehen, können wir Ihnen vielleicht besser helfen. – Ralph

Antwort

0

Die Verwendung von Tab strip unterscheidet sich von z.B. Multi page weil es kein Container für Steuerelemente ist, schlägt der Code NewTabstrip.Controls.Add... fehl. Tab strip hat keine Kontrollen, aber es installiert unterhält eine Reihe von Steuerelementen der User form.


Weitere Informationen finden Sie unter: How to Use the TabStrip Control in a UserForm

Und hier: How to Use the MultiPage Control in a UserForm sind Informationen über Mehrseit. Es ist ein Container für Steuerelemente, die Seite hat ihre eigenen Steuerelemente, vielleicht ist es genau das, wonach Sie suchen.


Ein Beispiel, wie das Tabstrip-Steuerelement verwendet werden kann, um eine Farbe des NewFrame entsprechend der ausgewählten Registerkarte zu ändern. (So verwenden Sie das Beispiel neuen Benutzer Formular-Schaltfläche mit dem Befehl erstellen AddTabstrip genannt) 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