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

Forumthread: Backcolor von Textbox ändern

Backcolor von Textbox ändern
09.06.2013 19:12:57
Textbox
Hallo liebe VBA-Freunde!
Ich möchte folgendes bewirken.
Über eine UserForm gebe ich in TextBoxen Daten ein und lasse bestimmte Werte aus Excelzellen wiederum in TextBoxen anzeigen. Das funktioniert auch sehr gut.
Es gibt jedoch bestimmte Musseingaben. D. h. am Anfang sollen alle TextBoxen, in denen Musseingaben erforderlich sind rot sein. Gebe ich einen Wert ein, so soll
sich die Backcolor auf grün ändern. Lösche ich die Eingaben wieder, so sollen alle Mussfelder wieder rot werden.
Wer kann mich hier unterstützen? Mussfeld ist z. B Datum.Text, Ve.Text, also überall, wo Werte in TextBoxen wiedergegeben werden.
Private Sub CommandButton1_Enter()
Dim Eingabe As Variant
Range("B2") = Datum.Text                                      'Datum in Zelle eintragen
Me.Wochentag.Text = Sheets("Flugplanung").Range("B3").Text    'Wochentag in Textbox  _
wiedergeben
Range("B4") = Ve.Text                                         'Ve in Zelle eintragen
Range("B5") = Tankvolumen.Text                                'Fassungsvermögen in Zelle  _
eintragen
Range("B6") = Verbrauch.Text                                  'Verbrauch l/h in Zelle  _
eintragen
Range("B7") = Windrichtung.Text                               'Windrichtung in Zelle  _
eintragen
Range("B9") = Windgeschwindigkeit.Text                        'Windrichtung in Zelle  _
eintragen
Range("B15") = Startzeit_1.Text                               'Startzeit Strecke_1 in Zelle   _
_
eintragen
Range("B16") = TC.Text                                        'Wert in Zelle B16 eintragen
Me.TH_1.Text = Sheets("Flugplanung").Range("B17").Text        'Wert aus Zelle in Textbox  _
wiedergeben.
End Sub

Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
nur durch Farbe-kein Mussfeld...
09.06.2013 19:22:05
robert
Hi,
da solltest Du die Textboxen auf Inhalt prüfen .
Wenn keine Eingabe-gehts nicht weiter...
Gruß
robert

AW: nur durch Farbe-kein Mussfeld...
09.06.2013 19:33:29
steffen
versuchs mal so:
Private Sub CommandButton1_Click()
If TextBox1 = "" Then 'hier wird geprüft, ob in der Textbox was eingetragen wurde oder nicht
TextBox1.BackColor = RGB(255, 0, 0)
Else
TextBox1.BackColor = RGB(0, 255, 0)
Exit Sub
End If
'hier weiteren Code
End Sub

Private Sub UserForm_Initialize()
TextBox1.BackColor = RGB(255, 0, 0) 'hier wird beim Laden der Userform die Textbox immer Rot
End Sub

Anzeige
AW: nur durch Farbe-kein Mussfeld...
09.06.2013 19:47:44
Thomas
Hallo Steffen!
Funktioniert!!
Vielen Dank

AW: nur durch Farbe-kein Mussfeld...
10.06.2013 19:47:13
Thomas
Hallo Steffen!
Ich habe noch eine Frage!
Ich möchte, dass, wenn kein richtiges Format angegeben ist, dass eine Fehlermeldung kommt.
Denn bei diesem Code geht die Farbe auf grün, wenn ich schon ein Leerzeichen reinmache.
Kann man da was machen?
VG
Thomas
Private Sub Datum_Change()
If Datum.Text = "" Then
Datum.BackColor = RGB(255, 0, 0)
Else
Datum.BackColor = RGB(0, 255, 0)
Exit Sub
End If
End Sub

Anzeige
AW: nur durch Farbe-kein Mussfeld...
10.06.2013 19:48:58
Hajo_Zi
Halo Thomas,
If isdate(Datum) then

AW: nur durch Farbe-kein Mussfeld...
10.06.2013 20:27:09
Thomas
Hallo Hajo!
Danke für die Antwort. Habe den Code umgeändert.
Aber hier erscheint sofort die MsgBox, wenn ich auch nur schon eine Zahl eingegeben habe
Private Sub Datum_Change()
If IsDate(Datum) Then
Datum.BackColor = RGB(0, 255, 0)
Else
MsgBox "Bitte Datum eingeben!"
Exit Sub
End If
End Sub

Anzeige
AW: nur durch Farbe-kein Mussfeld...
10.06.2013 20:58:40
Hajo_Zi
benutze das AfterUpdate Ereignis, nicht Change.
Gruß Hajo
;
Anzeige
Anzeige

Infobox / Tutorial

Textbox Backcolor in Excel VBA ändern


Schritt-für-Schritt-Anleitung

  1. UserForm erstellen: Öffne Excel und erstelle eine UserForm, indem du im VBA-Editor (ALT + F11) auf "Einfügen" und dann auf "UserForm" klickst.

  2. TextBox hinzufügen: Ziehe eine TextBox auf die UserForm. Du kannst mehrere TextBoxen hinzufügen, je nach Bedarf.

  3. CommandButton hinzufügen: Füge einen CommandButton hinzu, um die Eingaben zu verarbeiten.

  4. Code für die Backcolor hinzufügen: Doppelklicke auf den CommandButton und füge den folgenden Code hinzu:

    Private Sub CommandButton1_Click()
       If TextBox1.Value = "" Then
           TextBox1.BackColor = RGB(255, 0, 0) ' Rot, wenn leer
       Else
           TextBox1.BackColor = RGB(0, 255, 0) ' Grün, wenn ausgefüllt
       End If
    End Sub
    
    Private Sub UserForm_Initialize()
       TextBox1.BackColor = RGB(255, 0, 0) ' Setze die Backcolor beim Laden auf Rot
    End Sub
  5. Eingaben validieren: Um sicherzustellen, dass der Benutzer ein korrektes Datum eingibt, kannst du folgende Validierung hinzufügen:

    Private Sub Datum_Change()
       If IsDate(Datum.Text) Then
           Datum.BackColor = RGB(0, 255, 0) ' Grün, wenn das Datum gültig ist
       Else
           Datum.BackColor = RGB(255, 0, 0) ' Rot, wenn das Datum ungültig ist
           MsgBox "Bitte ein gültiges Datum eingeben!"
       End If
    End Sub

Häufige Fehler und Lösungen

  • Textbox bleibt rot: Stelle sicher, dass du den richtigen Code im CommandButton_Click-Ereignis hast. Überprüfe, ob die TextBox tatsächlich leer ist.

  • Fehlermeldung bei Datum: Wenn du eine Fehlermeldung erhältst, überprüfe, ob du das IsDate-Kommando korrekt anwendest. Es sollte im Datum_Change-Ereignis verwendet werden.


Alternative Methoden

Wenn du die Backcolor mehrerer TextBoxen gleichzeitig ändern möchtest, kannst du eine Schleife verwenden:

Private Sub CommandButton1_Click()
    Dim ctrl As Control
    For Each ctrl In Me.Controls
        If TypeName(ctrl) = "TextBox" Then
            If ctrl.Value = "" Then
                ctrl.BackColor = RGB(255, 0, 0)
            Else
                ctrl.BackColor = RGB(0, 255, 0)
            End If
        End If
    Next ctrl
End Sub

Diese Methode ist besonders nützlich, wenn du viele TextBoxen hast und nicht jede einzelne manuell ansprechen möchtest.


Praktische Beispiele

Hier sind einige Anwendungsbeispiele, die die Verwendung von vba backcolor in verschiedenen Szenarien zeigen:

  • Einfaches Benutzerformular: Verwende die oben genannten Codes, um ein einfaches Formular für die Eingabe von Daten zu erstellen.

  • Validierung mehrerer Eingaben: Erweitere das Formular um zusätzliche TextBoxen für verschiedene Daten und verwende den Loop-Ansatz aus der alternativen Methode, um die Backcolor aller TextBoxen basierend auf den Eingaben zu ändern.


Tipps für Profis

  • Farbpaletten verwenden: Statt RGB-Werten kannst du auch vordefinierte Farbnamen verwenden, um die Lesbarkeit des Codes zu erhöhen.

  • UserForm anpassen: Experimentiere mit verschiedenen Steuerelementen wie Labels oder Kombinationsfeldern, um dein UserForm ansprechender zu gestalten.

  • Ereignisse nutzen: Nutze Ereignisse wie AfterUpdate, um die Backcolor zu ändern, nachdem der Benutzer die Eingabe abgeschlossen hat.


FAQ: Häufige Fragen

1. Wie ändere ich die Backcolor einer TextBox in einer UserForm?
Du kannst die Backcolor einer TextBox mit dem Befehl Textbox.BackColor = RGB(...) ändern, wobei du die RGB-Werte für die gewünschte Farbe angibst.

2. Was mache ich, wenn die Farbe nicht aktualisiert wird?
Überprüfe, ob der Code im richtigen Ereignis (wie Click oder Change) platziert ist. Achte darauf, dass die Bedingungen für die Farbänderung korrekt definiert sind.

3. Kann ich auch andere Steuerelemente anpassen?
Ja, du kannst die Backcolor von anderen Steuerelementen wie Labels oder Buttons auf ähnliche Weise ändern.

4. Wie validiere ich Datumsangaben in einer TextBox?
Verwende die Funktion IsDate, um zu überprüfen, ob der eingegebene Wert ein gültiges Datum ist, und ändere die Backcolor entsprechend.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige