Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1748to1752
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
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

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
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

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige