Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Hintergrund mehrerer Textboxen wechseln

Hintergrund mehrerer Textboxen wechseln
08.04.2020 00:30:02
MarC
Abend zusammen,
ich habe ca. 40 Textboxen und möchte das sich die Hintergrundfarbe ändert wenn etwas drin steht. Wie es bei einer Textbox geht weiß und ich kann diesen Code auch für alle anderen kopieren. Aber ich würde gerne keine 3 - 4 Seiten gleichen Code stehen haben. Kann man das auch ohne Klassen abkürzen? Von Klassen verstehe ich noch nicht viel.
Private Sub TextBox46_Change()
If TextBox46.Value  "" Then
TextBox46.BackColor = &H80000004    ' hellgrün
Else
TextBox46.BackColor = &H80000018
End If
End Sub

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Hintergrund mehrerer Textboxen wechseln
08.04.2020 09:45:12
Luschi
Hallo MarC,
hier mal ein Beispiel, wie man das bei TextBoxen in der Userform macht mit Hilfe der Klassenprogrammierung:
https://www.herber.de/bbs/user/136519.xls
Gruß von Luschi
aus klein-Paris
Anzeige
Danke für eure Beispiele
09.04.2020 14:31:48
MarC
Danke für eure Hilfe und Beispiele ich glaube ich habe es verstanden =)
AW: Hintergrund mehrerer Textboxen wechseln
08.04.2020 10:08:56
Daniel
Hi
Du könntest den Code in einer Zeile unterbringen.
Dann wird es schon mal deutlich kürzer.
Außerdem könntest du statt dem konkreten Namen den Ausdruck ActiveControl verwenden, dann kannst du die Zeile einfach kopieren; in der Kopfzeile muss natürlich weiterhin der korrekte Textboxname stehen.
Private Sub TextBox46_Change()
ActiveControl.Backcolor = IIF(ActiveControl.Value = "", &H80000018, &H80000004)
End Sub
Eine andere Möglichkeit wäre, dass du das umfärben der Textboxen im MouseMove-Event der Userform vornimmst, also dann wenn der Anwender die Maus über die Userform bewegt.
Hat natürlich den Nachteil, dass das nicht funktioniert, wenn der Anwender die Tastatur zum wechseln benutzt.
Im MouseMove kannst du dann entweder nur das zuletzt bearbeitete Control umfärben:
If ActiveControl.Name like "Text*" Then ActiveControl.Backcolor = IIF(...)
Oder du prüfst in einer Schleife alle Textboxen, um den genannten Nachteil nachträglich zu kompensieren.
dim crt as control
For each crt in me.controls
If crt.Name like "Text*" then crt.Backcolor IIF(crt.value = "", ..., ...)
Next
Gruß Daniel
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

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