Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

[VBA] Einfärben von Textboxen über Schleife
#1
Hallo,

ich habe 44 Textboxen in einer Userform. Beim Betreten soll immer die aktuelle Textbox eingefärbt wetrden und beim Verlassen wieder entfärbt.
Wie kann ich folgenden Code über eine Schleife oder anders verkürzen?
'Einfärben der aktiven TextBox 
Private Sub TextBox1_Enter()
  TextBox1.BackColor = &HC0FFC0
End Sub
Private Sub TextBox2_Enter()
  TextBox2.BackColor = &HC0FFC0
End Sub
Private Sub TextBox3_Enter()
  TextBox3.BackColor = &HC0FFC0
End Sub
Private Sub TextBox4_Enter()
  TextBox4.BackColor = &HC0FFC0
End Sub
Private Sub TextBox5_Enter()
  TextBox5.BackColor = &HC0FFC0
End Sub
Private Sub TextBox6_Enter()
  TextBox6.BackColor = &HC0FFC0
End Sub
...
Antworten Top
#2
Hi Ralf,
Private Sub UserForm_Click()
 Dim i As Long
 For i = 1 To 6
   Me.Controls("TextBox" & i).SetFocus
 Next i
End Sub
  :19:

Gruß Uwe
Antworten Top
#3
Hi Uwe,

(25.11.2016, 11:32)Kuwer schrieb: :19:

hmmm,
da hat sich aber jetzt nix geändert, ob mit oder ohne das Userform_Click.

so?
Private Sub Userform_Click()
   Dim i As Long
   For i = 1 To 44
      Me.Controls("TextBox" & i).SetFocus
      If Me.Controls("TextBox" & i).Focus = True Then
         Me.Controls("TextBox" & i).BackColor = &HC0FFC0
      Else
         Me.Controls("TextBox" & i).BackColor = &HFFFFFF
      End If
   Next i
End Sub
Geht auch nicht.
Antworten Top
#4
Hallo Ralf,

versuchs mal so

Code:
Private Sub Userform_Click()
   Dim i As Long
   For i = 1 To 44
      Me.Controls("TextBox" & i).BackColor = &HFFFFFF
   Next i
'   MsgBox ActiveControl.Name
   For i = 1 To 44
      If Me.Controls("TextBox" & i).Name = ActiveControl.Name Then Me.Controls("TextBox" & i).BackColor = &HC0FFC0: Exit For
   Next i
End Sub
Gruß Stefan
Win 10 / Office 2016
Antworten Top
#5
Hallöchen,

das Betreten eines Textfeldes löst aber kein Userform_Click aus. Ich denke, die Aufgabe ist ein typischer Fall von TextBoxen mit Klassenprogrammierung zu erstellen.

Eine Einführung in das Thema gibt es z.B. dort:
http://www.online-excel.de/excel/grusel_vba.php?f=7

Allerdings gibt es da kein ENTER und EXIT. Siehe dazu z.B. hier, speziell der Ansatz von Bamberg:
http://www.office-loesung.de/ftopic268240_0_0_asc.php

In meinem Ersatz für den DatePicker hab ich übrigens auch Klassen verwendet.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste