Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1924to1928
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
Inhaltsverzeichnis

Textboxen gelb/weiß

Textboxen gelb/weiß
05.04.2023 07:21:42
Ron

Hallo Excelprofis,
ich habe auf einer Userform viele Textboxen und möchte, wenn man in sie klickt, dass sie gelb un beim Verlassen wieder weiß.
Ich weiß, dass es mit folgenden Codezeilen geht:

Private Sub TextBox1_Enter()
    TextBox1.BackColor = RGB(255, 255, 153) 'Gelb
End Sub

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    TextBox1.BackColor = vbWhite 'Weiß
End Sub

Gibt es eine Option, ohne für jede Textbox diese Zeilen einzeln zu schreiben, dies für alle Textboxen gleichzeitig anzuwenden?
Vielen Dank!
Gruß

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
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


Anzeige
AW: Textboxen gelb/weiß
05.04.2023 09:02:09
Ron
Hallo Thorsten,
danke für die schnelle Hilfe.
Da ich nach wie vor die Codezeilen schreiben muss, ist es aber für mich kein wirklicher Vorteil.
Grüße


AW: Textboxen gelb/weiß
05.04.2023 09:08:24
Oberschlumpf
Tja Ron,

dann lern mal schnell Klassenprogrammierung :-)

Ciao
Thorsten


AW: Textboxen gelb/weiß
05.04.2023 09:13:30
Ron
Danke


AW: Textboxen gelb/weiß
05.04.2023 09:26:06
volti
Hallo Ron,

hier mal ein Beispiel für eine Klassenprogrammierung. Es gibt da sicher noch weitere Methoden.

Allerdings bin ich mir jetzt nicht sicher, ob die Textboxevents Enter und Exit damit funktionieren. Das Changeevent klappt auf jeden Fall schon mal.

Aber vielleicht hat ja noch jemand eine bessere Idee....

Klassenprogrammierung.xlsm

Gruß Karl-Heinz


Anzeige
außer Thorstens Tipps...
05.04.2023 09:29:11
Rudi Maintaire
Hallo,
... hast du keine Option.
Klassenprogrammierung bringt dir hier nichts, da das Enter- und Exit-Ereignis nicht zur Verfügung steht.

Ich würde allerdings nicht den Namen der Textbox sondern die Textbox als Objekt übergeben.

Gruß
Rudi


schade, hätt ja mit Klass.prgr klappen können owT
05.04.2023 09:31:43
Oberschlumpf


AW: Textboxen gelb/weiß
05.04.2023 09:59:44
volti
Hallo zusammen,

wenn die Mausover-Highlight-funktion eine Alternative wäre....

Die kann Klassenprogrammierung.

https://www.herber.de/bbs/user/158596.xlsm

Gruß
Karl-Heinz


Anzeige
AW: Textboxen gelb/weiß
05.04.2023 10:28:34
Daniel
Hi
mal ne ganz andere Idee. wie schnell und einfach die Codes für viele Textboxen erstellen kannst.
dein Textboxen sind wahrscheinlich durchnummeriert von 1-x

schreibe also einfach den benötigten Code für eine Textbox in eine Zelle, ersetze dabei die "1" von "Textbox1" durch "#":
als in Zelle A1:
Private Sub TextBox_Enter()
TextBox#.BackColor = RGB(255, 255, 153) 'Gelb
End Sub
      
Private Sub TextBox#_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox#.BackColor = vbWhite 'Weiß
End Sub
in Zelle B1 kommt dann diese Formel, die du soweit nach unten ziehst wie benötigt:
=Wechseln($A$1;"#";Zeile(B1))
die so entstandenen Texte kannst du dann in den Codeeditor kopieren und du hast alle benötigten Makros.

Gruß Daniel


Anzeige
AW: Textboxen gelb/weiß
05.04.2023 10:45:12
Ron
Danke euch allen!

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige