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

Forumthread: Userform Label Farbe ändern mit If Bedingung

Userform Label Farbe ändern mit If Bedingung
08.05.2019 17:26:39
Oliver
Hallo Leute,
ich verstehe nicht warum meine Userform sich so seltsam verhält, wie sie es gerade tut und hoffe ihr könnt mir helfen.
Ich habe eine Multipage mit 3 Reitern und auf jeder Page diverse TextBoxen mit Inhalten (meist Gültigkeitsdatum). Auf der ersten Page, die man beim aufrufen der Userform sieht befindet sich eine Listbox in der ich Artikel auswählen kann. Nach Klick auf einen Artikel werden sämtliche Felder passend zur Auswahl mit den dazugehörigen Daten befüllt. Soweit so gut, jetzt möchte ich vermeiden bei jedem Artikel ständig alle Reiter zu kontrollieren und wollte auf der ersten Seite eine Schnellübersicht machen, die wie folgt funktionieren sollte:
Auf der ersten Page habe ich 3 Label die jeweils den Status der Page anzeigen soll, sprich bei bei Klick auf Artikel X solllen sich die 3 Label A, B, C in Rot oder Grün färben.
Label B z.B. prüft mit folgender Formel ob alle Daten auf der zweiten Page noch gültig sind:
If TextBox26.BackColor = vbRed Or TextBox29.BackColor = vbRed Or TextBox32.BackColor = vbRed Or TextBox35.BackColor = vbRed Then
Label481.BackColor = vbRed
Else
Label481.BackColor = vbGreen
End If
An sich nicht kompliziert und ich denke auch dass die Formel korrekt ist, zumindest bekomme ich keinen Debugger. Allerdings färbt sich das Label wie es will und es wirkt zufällig.
Kann es sein, dass das nicht über mehrere Pages funktioniert, oder woran kann es zum Beispiel liegen, dass wenn ich die Artikel von oben nach unten Klicke, Artikel 3 das Zweite Label Grün ist und wenn ich dann von unten nach oben die Listbox hochklicke das Label plötzlich Rot ist.
Ich hoffe es ist verständlich und jemand kann mir helfen.
Vielen Dank im Vorraus
Gruß Oliver
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Userform Label Farbe ändern mit If Bedingung
08.05.2019 17:34:42
Oliver
Ich entschuldige mich für jeden, der seine Zeit vergeudet hat und sich das durchgelesen hat, das Problem saß wie so oft zwischen den Ohren. Weiss nicht wie ich das lösche, aber es hat sich erledigt.
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Userform Label Farbe ändern mit If Bedingung


Schritt-für-Schritt-Anleitung

  1. Öffne die Userform in Excel VBA: Gehe zu deinem Excel-Dokument und öffne den Visual Basic for Applications (VBA) Editor mit ALT + F11.
  2. Füge eine Multipage hinzu: Klicke mit der rechten Maustaste auf die Userform und wähle "Multipage" aus der Toolbox. Damit kannst du mehrere Seiten erstellen.
  3. Füge TextBoxen und Labels hinzu: Platziere auf jeder Page TextBoxen, in denen die Daten angezeigt werden, sowie Labels, die den Status anzeigen.
  4. Schreibe die If-Bedingung: Füge den folgenden Code in das Ereignis der ListBox ein, das beim Klicken eines Artikels ausgelöst wird:
    If TextBox26.BackColor = vbRed Or TextBox29.BackColor = vbRed Or TextBox32.BackColor = vbRed Or TextBox35.BackColor = vbRed Then
       Label481.BackColor = vbRed
    Else
       Label481.BackColor = vbGreen
    End If
  5. Testen: Klicke auf verschiedene Artikel in der ListBox und überprüfe, ob sich die Labels wie gewünscht färben.

Häufige Fehler und Lösungen

  • Problem: Labels färben sich nicht konsistent.

    • Lösung: Stelle sicher, dass die If-Bedingung immer nach dem Ändern der TextBoxen aufgerufen wird. Überprüfe, dass die TextBoxen tatsächlich die erwarteten Hintergrundfarben haben.
  • Problem: Der Code wird nicht ausgeführt.

    • Lösung: Überprüfe, ob der Code im richtigen Ereignis (z.B. Click-Ereignis der ListBox) platziert ist und ob der VBA-Projekt nicht gesperrt ist.

Alternative Methoden

  • Verwende Select Case: Anstelle von If-Bedingungen könntest du auch eine Select Case-Anweisung verwenden, um die Logik zu strukturieren und zu vereinfachen.

  • Farbänderung durch andere Ereignisse: Du kannst die Farbe der Labels auch ändern, wenn die Benutzer die Werte in den TextBoxen ändern. Dazu kannst du das Change-Ereignis der TextBox nutzen.


Praktische Beispiele

Hier ein Beispiel, wie die Userform mit einer Multipage aufgebaut sein könnte:

Private Sub ListBox1_Click()
    ' Beispielcode zur Farbanpassung
    If TextBox26.BackColor = vbRed Then
        Label481.BackColor = vbRed
    Else
        Label481.BackColor = vbGreen
    End If
End Sub

Private Sub TextBox26_Change()
    ' Beispiel zum Ändern der Farbe bei TextBox-Änderung
    If TextBox26.Text = "" Then
        TextBox26.BackColor = vbWhite
    Else
        TextBox26.BackColor = vbRed
    End If
    Call ListBox1_Click ' Update Labels
End Sub

Tipps für Profis

  • Verwendung von Konstanten: Definiere Farbkonstanten am Anfang deines Codes, um die Lesbarkeit zu erhöhen. Beispiel:

    Const RED As Long = &HFF0000
    Const GREEN As Long = &H00FF00
  • Fehlerbehandlung: Integriere eine Fehlerbehandlung in deinen Code, um unerwartete Probleme elegant zu lösen:

    On Error Resume Next
    ' Dein Code hier
    On Error GoTo 0

FAQ: Häufige Fragen

1. Warum ändert sich die Label-Farbe nicht, obwohl die Bedingungen erfüllt sind? Es könnte daran liegen, dass der Code nicht im richtigen Ereignis platziert ist oder die Hintergrundfarben der TextBoxen nicht richtig gesetzt werden.

2. Kann ich die Farben der Labels auch mit einer Excel-Suchfunktion ändern? Ja, du kannst die Excel-Suchfunktion verwenden, um bestimmte Werte zu finden und darauf basierend die Label-Farben zu ändern. Achte darauf, dass du die Logik entsprechend anpasst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige