Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Caption von Labels in UserForm leeren

Caption von Labels in UserForm leeren
24.11.2015 09:55:55
Labels
Hallo,
ich habe eine Userform mit einer Multipage, in der ich bestimmte Labels für dynamisch erzeugte Hinweise verwende.
Der Name der betreffenden Labels beginnt immer mit "LblMessage" und danach einer Zahl, also z.B. LblMessage1, LblMessage2 usw.
Bisher verwende ich folgenden Code zum Löschen / Zurücksetzen dieser Labels.
Gibt es hier auch die Möglichkeit, das gleiche über einen Loop zu erreichen aber nur bezogen auf Labels mit diesem Namen ?
Mein Code:
Sub ClearLblMessage()
With FrmToolbox
.LblMessage1.Caption = ""
.LblMessage2.Caption = ""
.LblMessage3.Caption = ""
.LblMessage4.Caption = ""
.LblMessage5.Caption = ""
.LblMessage6.Caption = ""
.LblMessage7.Caption = ""
.LblMessage8.Caption = ""
End With
End Sub
Vielen Dank im Voraus.
LG,
Tanja

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Caption von Labels in UserForm leeren
24.11.2015 09:59:28
Labels
Hallo,
per Schleife.
Sub ClearLblMessage()
Dim i as integer
With FrmToolbox
for i= 1 to 8
.Controls("LblMessage" &i).Caption = ""
next i
End With
End Sub
Gruß
Rudi

AW: Caption von Labels in UserForm leeren
24.11.2015 10:21:10
Labels
Hallo Rudi,
vielen Dank.
Die Lösung von Franz passt hier ein bisschen besser für mich, weil ich dort unabhängig von der Anzahl der Labels bin - trotzdem vielen Dank für die schnelle Hilfe !
LG,
Tanja

Anzeige
AW: Caption von Labels in UserForm leeren
24.11.2015 10:16:03
Labels
Hallo Tanja,
z.B. so:
Sub ClearLblMessage()
Dim objControl As Control
With FrmToolbox
For Each objControl In .Controls
If TypeName(objControl) = "Label" Then
If Left(LCase(objControl.Name), 10) = "lblmessage" Then
objControl.Caption = ""
End If
End If
Next
End With
End Sub
Gruß
Franz

Anzeige
AW: Caption von Labels in UserForm leeren
24.11.2015 10:21:38
Labels
Hallo Franz,
das ist super so und funktioniert bestens - vielen Dank für die schnelle Hilfe !
LG,
Tanja

AW: Caption von Labels in UserForm leeren
24.11.2015 11:00:51
Labels
Hi
benenne die Labels so, dass die Namen mit gleichen Zeichenfolge beginnen und achte darauf, dass es keine anderen Steuerelemente gibt, deren Namen mit der selben Zeichenfolge beginnt:
dim crtl as Control
for each crtl in FrmToolbox.Controls
if crtl.Name Like "LblMessage*" then crtl.Caption = ""
next
hat folgenede Vorteile:
- du musst diesen Code nicht anpassen, wenn du die Anzahl der Message-Labels änderst
- du musst die Labels nicht durchnummerieren, du kannst ihnen auch einen sprechenden Namen geben (zumindest ab dem gemeinsamen Beginn)
Gruß Daniel
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Caption von Labels in UserForm leeren


Schritt-für-Schritt-Anleitung

Um die Caption von Labels in einer UserForm zu leeren, kannst Du den folgenden VBA-Code verwenden. Diese Anleitung zeigt, wie Du die Labels in einer Multipage-UserForm zurücksetzen kannst.

  1. Öffne den VBA-Editor in Excel (Alt + F11).
  2. Füge ein neues Modul hinzu.
  3. Kopiere den folgenden Code in das Modul:
Sub ClearLblMessage()
    Dim i As Integer
    With FrmToolbox
        For i = 1 To 8
            .Controls("LblMessage" & i).Caption = ""
        Next i
    End With
End Sub
  1. Schließe den VBA-Editor und führe das Makro aus.

Dieser Code setzt die Caption der Labels von LblMessage1 bis LblMessage8 auf leer.


Häufige Fehler und Lösungen

  • Fehler: "Objekt nicht gefunden"

    • Lösung: Stelle sicher, dass die Label-Namen in der UserForm genau mit dem übereinstimmen, was Du im Code angegeben hast. Überprüfe auch, ob die UserForm korrekt benannt ist.
  • Fehler: Labels werden nicht geleert

    • Lösung: Achte darauf, dass Du die UserForm-Referenz (FrmToolbox) korrekt angegeben hast. Wenn Du den Namen der UserForm geändert hast, musst Du den Code entsprechend anpassen.

Alternative Methoden

Eine alternative Methode ist die Verwendung einer Schleife, um alle Labels dynamisch zu leeren, ohne ihre Namen anzugeben. Hier ist ein Beispiel:

Sub ClearLblMessageDynamic()
    Dim objControl As Control
    With FrmToolbox
        For Each objControl In .Controls
            If TypeName(objControl) = "Label" Then
                If Left(LCase(objControl.Name), 10) = "lblmessage" Then
                    objControl.Caption = ""
                End If
            End If
        Next
    End With
End Sub

Diese Methode ist flexibler, da sie unabhängig von der Anzahl der Labels funktioniert und sicherstellt, dass nur die Labels mit dem entsprechenden Namen geleert werden.


Praktische Beispiele

Wenn Du viele Labels hast, die nach einem bestimmten Muster benannt sind, ist es sinnvoll, diese mit einem gemeinsamen Präfix zu benennen. Hier ist ein Beispiel, wie Du Labels in einer UserForm benennen könntest:

  • LblMessage1
  • LblMessage2
  • LblMessage3

Mit dem oben genannten Code kannst Du alle Multipage Labels in der UserForm leeren, indem Du einfach die Schleife anpasst.


Tipps für Profis

  • Namen der Labels: Achte darauf, dass die Labels konsistent und aussagekräftig benannt sind. Dies erleichtert das Finden und Verwalten der Labels im Code.
  • Verwendung von Wildcards: Du kannst die Verwendung von Wildcards in VBA nutzen, um die Flexibilität zu erhöhen. Zum Beispiel könnte der folgende Code verwendet werden:
Dim crtl As Control
For Each crtl In FrmToolbox.Controls
    If crtl.Name Like "LblMessage*" Then
        crtl.Caption = ""
    End If
Next

Diese Methode ermöglicht es, alle Labels zu leeren, die mit "LblMessage" beginnen, ohne sie manuell aufzulisten.


FAQ: Häufige Fragen

1. Wie kann ich die Anzahl der Labels dynamisch ändern?
Du kannst die Schleifenbedingung im Code anpassen oder die dynamische Methode verwenden, die alle Labels mit einem bestimmten Namen überprüft.

2. Funktioniert das auch in Excel 2016?
Ja, die oben genannten VBA-Codes sind mit Excel 2016 und späteren Versionen kompatibel. Achte darauf, dass Du die UserForm und die Labels korrekt referenzierst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige