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

Forumthread: Label-Bezeichnung per VBA ändern

Label-Bezeichnung per VBA ändern
09.04.2019 10:45:05
Dave
Hallo zusammen.
Ich bräuchte bitte Hilfe in einer Userform.
Ich habe mehrere Label mit Namen in der Form "TagXX" wobei das XX für 01 bis 31 steht. Diese sollen aus dem Code heraus bei Bedarf mit einer variablen Beschriftung (.Caption) versehen werden. Die Beschriftung ergibt sich aus einem Datum, das in Text umformatiert werden soll, weil die Caption-Eigenschaft nur Text akzeptiert.
Wenn ich testhalber die Zeile
'Tag01.Caption = CStr(ReisebeginnDatum + i - 1)
versuche, klappt das auch.
Sobald ich das jedoch in der Schleife verwende wie unten zu sehen [Me(...)] bekomme ich eine Fehlermeldung. Der erste Teil mit der .Visible-Eigenschaft funktioniert problemlos.
Private Sub ReiseendeDatum_Change()
Dauer = ReiseendeDatum - ReisebeginnDatum
If Dauer > 0 And Dauer Fehler -->  Me("Ort" & Format(i, "00")).Caption = CStr(ReisebeginnDatum + i - 1)
Test-->     'Tag01.Caption = CStr(ReisebeginnDatum + i - 1)
Next
End If
End Sub
Was mache ich falsch und wie macht man es besser?
Danke vorab und liebe Grüße
David
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Benutze Controls...
09.04.2019 10:49:55
Beverly
Hi David,
nach diesem Prinzip (ungetestet):
Me.Controls("Tag" & Format(i, "00"))


AW: Benutze Controls...
09.04.2019 11:10:12
Dave
Nein, leider nicht.
Es kommt immer noch die Meldung "Lfz 438 = Objekt unterstützt diese Eigenschaft oder Methode nicht.
:-(
Anzeige
Beispielmappe? - o.w.T.
09.04.2019 12:18:40
Beverly


erledigt
09.04.2019 14:16:22
Dave
Ich habe das Problem selbst gelöst, war eines der Marke "Eigentor".
Ich habe auf das falsche Objekt referenziert, statt des Label-Objekts habe ich das TextBox-Objekt verwendet, welches die "Caption"-Eigenschaft nicht hat.
Trotzdem vielen Dank für die (eventuellen) Mühen...
Gruß
David
Anzeige
noch offen
09.04.2019 11:16:02
Dave
kwT
wirklich noch offen
09.04.2019 11:18:14
Dave
Boah, jedesmal, wenn ein Eintrag aus irgendwelchen Gründen nicht abgeschickt wird, sind alle Kontrollkästchen wieder deaktiviert - das nervt... :-(
wirklich noch offen
09.04.2019 11:19:08
Dave
Boah, jedesmal, wenn ein Eintrag aus irgendwelchen Gründen nicht abgeschickt wird, sind alle Kontrollkästchen wieder deaktiviert - das nervt... :-(
Anzeige
noch offen
09.04.2019 12:59:50
Dave
kwt
;
Anzeige
Anzeige

Infobox / Tutorial

Label-Bezeichnung per VBA ändern


Schritt-für-Schritt-Anleitung

Um die Bezeichnung eines Labels in einer Userform per VBA zu ändern, folge diesen Schritten:

  1. Öffne deine Userform in der VBA-Entwicklungsumgebung (Alt + F11).

  2. Identifiziere die Labels, die du ändern möchtest. In diesem Beispiel haben die Labels die Namen "Tag01", "Tag02", ..., "Tag31".

  3. Erstelle eine Schleife, um die Caption der Labels dynamisch zu ändern. Hier ist ein einfaches Beispiel:

    Private Sub ReiseendeDatum_Change()
       Dim Dauer As Integer
       Dim i As Integer
    
       Dauer = ReiseendeDatum - ReisebeginnDatum
       If Dauer > 0 Then
           For i = 1 To Dauer
               Me.Controls("Tag" & Format(i, "00")).Caption = CStr(ReisebeginnDatum + i - 1)
           Next i
       End If
    End Sub
  4. Führe den Code aus, um die Änderungen in der Userform zu sehen.


Häufige Fehler und Lösungen

Fehler 1: "Lfz 438 = Objekt unterstützt diese Eigenschaft oder Methode nicht."

  • Lösung: Stelle sicher, dass du auf das richtige Objekt zugreifst. Verwirrung kann entstehen, wenn du versuchst, die Caption eines Textfeldes statt eines Labels zu ändern. Achte darauf, dass du Me.Controls("Tag" & Format(i, "00")) korrekt verwendest.

Fehler 2: Labels werden nicht aktualisiert.

  • Lösung: Überprüfe, ob die Schleife korrekt durchlaufen wird und der Dauer-Wert korrekt berechnet wird.

Alternative Methoden

Falls du mit der obigen Methode nicht zum Ziel kommst, gibt es alternative Ansätze:

  • Direkte Zuweisung: Anstatt den Namen dynamisch zu generieren, kannst du auch direkt auf die Labels zugreifen, indem du sie namentlich ansteuerst, wie z.B. Tag01.Caption = "Neuer Text".

  • Array von Labels: Du könntest auch die Labels in ein Array packen und dann mit einer Schleife darauf zugreifen:

    Dim Labels(1 To 31) As MSForms.Label
    Set Labels(1) = Me.Tag01
    Set Labels(2) = Me.Tag02
    ' ... und so weiter

Praktische Beispiele

Hier ist ein praktisches Beispiel, um die Caption mehrerer Labels mit dem aktuellen Datum zu ändern:

Private Sub UpdateLabels()
    Dim i As Integer
    Dim currentDate As Date
    currentDate = Date

    For i = 1 To 31
        Me.Controls("Tag" & Format(i, "00")).Caption = Format(currentDate + (i - 1), "dd.mm.yyyy")
    Next i
End Sub

Hiermit wird jedem Label ein Datum zugewiesen, das auf dem aktuellen Datum basiert.


Tipps für Profis

  • Debugging: Nutze Debug.Print in deiner Schleife, um die Werte, die du an die Labels zuweist, zu überprüfen. So kannst du schnell Fehler in deinen Berechnungen finden.

  • Fehlerbehandlung: Implementiere eine Fehlerbehandlung in deinem VBA-Code, um unerwartete Fehler abzufangen. Zum Beispiel:

    On Error GoTo ErrorHandler
    ' Dein Code hier
    Exit Sub
    ErrorHandler:
    MsgBox "Ein Fehler ist aufgetreten: " & Err.Description

FAQ: Häufige Fragen

1. Frage: Was mache ich, wenn ich eine Fehlermeldung erhalte, dass das Objekt nicht unterstützt wird?

Antwort: Überprüfe, ob du auf das richtige Steuerelement zugreifst. Labels haben die Caption-Eigenschaft, während TextBoxen diese nicht haben.

2. Frage: Kann ich die Labels auch ohne Schleife aktualisieren?

Antwort: Ja, du kannst die Caption eines einzelnen Labels direkt zuweisen, ohne eine Schleife zu verwenden. Das ist besonders nützlich, wenn du nur ein bestimmtes Label ändern möchtest.

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