AW: Textboxen gelb/weiß
05.04.2023 08:48:39
Oberschlumpf
Hi Ron,
a) es heißt übrigens DAS Userform(ular) ;-)
b) ich würd sagen, "ja, es gibt die Möglichkeit, deine Befehle nicht in jeder Textbox wiederholen zu müssen", diese Möglichkeit heißt Klassenprogrammierung.
Aber bei deinem noch wenigen VBA-Wissen ist Klassenprogrammierung noch "zu weit weg" - obwohl aber nix dagegen spricht, dass du über Klassenprogrammierung trotzdem viel im Internet lesen + lernen könntest.
c) eine Alternative könnte sein, die eigtl Befehle in eine Sub auszulagern und mit Hilfe von Parametern entsprechend die richtige Textbox anzusprechen
Das ändert zwar nix daran, dass du - weiterhin - mind. 1 Befehl jeweils ins Enter- UND Exit-Ereignis jeder Textbox schreiben musst, aber trotzdem hat diese Alternative mind. 1 Vorteil - den ich später erkläre
Erstmal hier Bsp-Code für 2 Textboxen
1. füg im VBE ein allgemeines Modul hinzu
2. Schreib in dieses Modul diesen Code
Sub sbYellowWhite(ByVal txtbox As String, ByVal yellyes As Boolean)
With UserForm1 'wenn Name im Original anders, dann hier anpassen!
If yellyes = True Then
.Controls(txtbox).BackColor = RGB(255, 255, 153)
Else
.Controls(txtbox).BackColor = vbWhite
End If
End With
End Sub
3. Schreib in die Ereignisse von Textbox1 diesen Code
Private Sub TextBox1_Enter()
sbYellowWhite "textbox1", True
End Sub
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
sbYellowWhite "textbox1", False
End Sub
4. Schreib in die Ereignisse von Textbox2 diesen Code
Private Sub TextBox2_Enter()
sbYellowWhite "textbox2", True
End Sub
Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
sbYellowWhite "textbox2", False
End Sub
So, bei "Enter" von Textbox1 wird "mein" Sub mit den Parametern "textbox1" und "True" aufgerufen.
"textbox1" ist einfach nur der Name der Textbox und "True" sagt dem Code im Sub, dass die Farbe auf gelb geändert werden soll.
Bei "Exit" von Textbox1 wird "mein" Sub mit den Parametern "textbox1" und "False" aufgerufen.
"textbox1" ist weiterhin nur der Name der Textbox und "False" sagt dem Code im Sub, dass die Farbe auf weiß geändert werden soll.
Das Gleiche passiert genau so für Textbox2.
Der Vorteil:
Der Hauptcode in der Sub muss nur einmal geschrieben werden!
In Enter + Exit steht jeweils nur eine ganz kurze Codezeile
oh, noch ein Vorteil!
Du könntest den Hauptcode so oft/viel erweitern, wie du möchtest!
All das müsstest du - auch nur einmal! - schreiben - und trotzdem würde der Hauptcode bei Auswahl/Anklicken jeder Textbox ausgeführt werden!
Hilfts?
Ciao
Thorsten