2016-10-26 2 views
1

Ich habe ein Formular mit mehreren Steuerelementen. Es enthält einen Tabstrip mit einer Registerkarte. Ich erlaube Benutzern, Registerkarten hinzuzufügen, indem Sie auf commandbutton1 klicken. So weit, so gut.Registerkarte von Registerkarte in Benutzerformular entfernen - VBA Excel

Jetzt möchte ich auch Benutzer in der Lage sein, die letzte Registerkarte (mit Ausnahme der ersten) durch Klicken auf commandbutton2 zu entfernen. Das Problem ist, dass ich trotz der Tatsache, dass ich etwa zwei Stunden gesucht habe, nicht die richtige Syntax für die Methode "remove" finden kann, wenn es um Tabs geht. Jede Hilfe wird geschätzt.

bearbeitet:

So machen Sie die Frage präziser: Was für „entfernen“ Methode die richtige Syntax ist, wenn es Parameter ein String-Variable ist und nicht eine bestimmte Registerkarte Namen. (zum Beispiel Entfernen der aktuellen Registerkarte)

z.B. Es wäre toll, wenn eine der folgenden funktionieren würde:

Sub test 
    Dim nm As String 

    With TabStrip1 
     nm = .SelectedItem.Name 
     .Tabs.Remove (nm) 
    End With 
End Sub 

oder

Sub test 
    With TabStrip1 
     .Tabs.Remove (.SelectedItem.Name) 
    End With 
End Sub 

Antwort

0

Hallo Sie einen Tab durch die TabStrip1.Tabs.Remove Linie entfernen können.

Private Sub CommandButton1_Click() 'Insert the Tap Test 
     TabStrip1.Tabs.Add ("Test") 
    End Sub 

    Private Sub CommandButton2_Click()'Removes the Tap Test 
     TabStrip1.Tabs.Remove ("Test") 
    End Sub 

The Rest kann man mit einem etwas wie dieses Griff:

If TabStrip1.Tabs.Count >= 2 Then 
    TabStrip1.Tabs.Remove (TabStrip1.Tabs.Count - 1) 
End If 

Sie haben Faust zu überprüfen, ob es mehr als zwei Taps sind. Wenn ja, löschen Sie den letzten Tap. Der Tipp ist, dass der Index mit dem zweiten Tipp beginnt!

+0

für Ihre Zeit, die Sie sehr viel Dank. Deine Antwort hat perfekt funktioniert, aber ich habe nicht klar gesagt, was ich wollte. Ich habe meine Frage bearbeitet. Wenn Sie es versuchen könnten, wäre ich dankbar. – dimitris

1

Endlich den Weg gefunden. remove Methode akzeptiert eine Registerkarte caption als Argument und nicht seine name.

In diesem Fall war die folgende große:

Private Sub CommandButton2_Click() 
    Dim nm As String 

    With TabStrip1 
     nm = .SelectedItem.Caption 
     .Tabs.Remove (nm) 
    End With 
End Sub 

oder

Private Sub CommandButton2_Click() 
    With TabStrip1 
     .Tabs.Remove (.SelectedItem.Caption) 
    End With 
End Sub 
Verwandte Themen