Labels in einer UserForm löschen
Schritt-für-Schritt-Anleitung
Hier ist eine einfache Schritt-für-Schritt-Anleitung, wie Du Labels in einer UserForm (UF) löschen kannst:
-
UserForm und MultiPage erstellen: Stelle sicher, dass Du eine UserForm mit einer MultiPage hast, in der Du die Labels anlegen möchtest.
-
Label erstellen: Verwende den folgenden Code, um Labels zur Laufzeit hinzuzufügen:
With MultiPage1.Pages(3)
For iCount = 1 To 25
Set sTb = .Controls.Add("Forms.Label.1", "lbl_Artikel" & iCount)
sTb.Caption = Tab2_ArtikelListe.Range("A" & iCount + 1).Value
sTb.ZOrder (0)
Next iCount
End With
-
Labels löschen: Um die vorherigen Labels zu löschen, kannst Du den folgenden Code verwenden:
Dim lngIndex As Long
With MultiPage1.Pages(3)
For lngIndex = .Controls.Count - 1 To 0 Step -1
If TypeOf .Controls(lngIndex) Is MSForms.Label Then
.Controls.Remove .Controls(lngIndex).Name
End If
Next lngIndex
End With
-
Labels erneut hinzufügen: Führe die oben genannte Logik zum Hinzufügen von Labels erneut aus, nachdem Du die alte Liste gelöscht hast.
Häufige Fehler und Lösungen
-
Laufzeitfehler 444: Dieser Fehler tritt auf, wenn Du versuchst, Steuerelemente zu löschen, die nicht zur Laufzeit erstellt wurden. Stelle sicher, dass Du nur die Labels löschst, die Du zur Laufzeit erstellt hast.
-
Steuerelemente können nicht gelöscht werden: Wenn Du diesen Fehler siehst, überprüfe, ob Du eventuell Labels hast, die nicht dynamisch hinzugefügt wurden. In diesem Fall musst Du die Löschlogik anpassen, um nur die richtigen Labels zu entfernen.
Alternative Methoden
Eine alternative Methode besteht darin, alle Labels auf der Seite mit einem einzigen Befehl zu löschen, falls Du sicher bist, dass alle Steuerelemente Labels sind:
MultiPage1.Pages(3).Controls.Clear
Diese Methode funktioniert gut, wenn Du nur Labels auf dieser Seite hast.
Praktische Beispiele
Hier sind zwei praktische Beispiele, die Du verwenden kannst:
-
Labels bei Button-Klick löschen:
Private Sub CommandButton1_Click()
Call ClearLabels
Call AddLabels
End Sub
Private Sub ClearLabels()
Dim lngIndex As Long
With MultiPage1.Pages(3)
For lngIndex = .Controls.Count - 1 To 0 Step -1
If TypeOf .Controls(lngIndex) Is MSForms.Label Then
.Controls.Remove .Controls(lngIndex).Name
End If
Next lngIndex
End With
End Sub
Private Sub AddLabels()
' Hier den Code zum Hinzufügen von Labels einfügen
End Sub
-
Labels beim Aktivieren der Seite löschen:
Private Sub MultiPage1_Change()
If MultiPage1.Value = 3 Then
Call ClearLabels
Call AddLabels
End If
End Sub
Tipps für Profis
-
Verwende Step -1
beim Löschen: Wenn Du Labels löschst, gehe von hinten nach vorne durch die Liste, um Indexprobleme zu vermeiden.
-
Benenne deine Steuerelemente konsistent: Wenn Du Labels mit einem festen Namensschema (z.B. "lbl_Artikel1", "lbl_Artikel2") erstellst, wird das Löschen einfacher.
-
Teste den Code in einer Sandbox: Stelle sicher, dass Du den Code in einer Testumgebung ausprobierst, bevor Du ihn in deine Hauptanwendung integrierst.
FAQ: Häufige Fragen
1. Wie kann ich alle Labels auf einmal löschen?
Du kannst die Methode Controls.Clear
verwenden, um alle Steuerelemente auf der Seite zu löschen. Stelle sicher, dass es nur Labels gibt.
2. Was mache ich, wenn ich Laufzeitfehler beim Löschen erhalte?
Überprüfe, ob die Labels tatsächlich zur Laufzeit erstellt wurden. Falls nicht, musst Du die Löschlogik anpassen, um nur die gewünschten Labels zu entfernen.