Textbox Exit Event
#1
Hallo liebe Excelgemeinde,


noch eine Frage an euch! :)

Mit folgenden Codes:
Code:
Private Sub TextBox5_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox4 = "" Then
TextBox5.BackColor = &HE0E0E0
Else
If TextBox5.Value <> "" Then
TextBox5.BackColor = &HE0E0E0
Else
TextBox5.BackColor = &HC0FFFF
End If
End If
'                                                         '  Spalte E:
End Sub

Private Sub TextBox6_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox4 = "" Then
TextBox6.BackColor = &HE0E0E0
Else
If TextBox6.Value <> "" Then
TextBox6.BackColor = &HE0E0E0
Else
TextBox6.BackColor = &HC0FFFF
End If
End If
'                                                        '  Spalte F:
End Sub

Private Sub TextBox7_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If TextBox4 = "" Then
TextBox7.BackColor = &HE0E0E0
Else
If TextBox7.Value <> "" Then
TextBox7.BackColor = &HE0E0E0
Else
TextBox7.BackColor = &HC0FFFF
End If
End If
'                                                        '  Spalte G:
End Sub

färbe ich die Textboxen beim Verlassen der Textboxen je nachdem ob ein Wert drin steht oder nicht!

Kann man das mit einer Schleife machen oder sowas? Und wie müsste es für Comboboxen heißen?


Vielen Dank im Voraus
LG
Alexandra
Top
#2
Hallo Alexandra,

Du meinst nicht für jede Textbox ein Exit-Ereignis sondern nur eins für Alle? Befinden sich die Textboxen in einer Userform oder einer Tabelle?
Gruß Stefan
Win 10 / Office 2016
Top
#3
Hallo Steffl,



danke für deine Antwort!

Die textboxen befinden sich alle in eine Userform!

Zum Hintergrund, mit einen anderen Code prüfe ich ob alle Textboxen in der Userform befüLlt sind, wenn leer dann werden die leeren Boxen gelb hinterlegt!

Mit dem Code in diesen Post möchte ich wenn ich eine dieser gelben Textboxen ein Wert eintrage und die Textbox dann verlasse, dass die Textbox dann wieder grau wird, das ist alles! Hoffe ist jetzt verständlicher!


Vielen Dank
VG
Alexandra
Top
#4
Hallo Alexandra,

da das Exit-Ereignis in einer Klasse nicht geht, habe ich mal als Notlösung den Vorschlag

Code:
Private Sub TextBox5_Exit(ByVal Cancel As MSForms.ReturnBoolean)
   prxCysu TextBox5
End Sub

Private Sub TextBox6_Exit(ByVal Cancel As MSForms.ReturnBoolean)
   prxCysu TextBox6
End Sub

Private Sub TextBox7_Exit(ByVal Cancel As MSForms.ReturnBoolean)
   prxCysu TextBox7
End Sub

Sub prxCysu(txtTextbox As MSForms.TextBox)
   MsgBox txtTextbox.Name
   If TextBox4.Value = "" Then
      txtTextbox.BackColor = &HE0E0E0
   Else
      If txtTextbox.Value <> "" Then
         txtTextbox.BackColor = &HE0E0E0
      Else
         txtTextbox.BackColor = &HC0FFFF
      End If
   End If
End Sub

Das heißt neben den vielen Exit-Ereignissen ein Makro, wo die Textbox gefärbt wird.
Gruß Stefan
Win 10 / Office 2016
[-] Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:
  • cysu11
Top
#5
Hallo Steffl,


dann werde ich das wohl so machen, ich dachte da gibt es was kürzeres! :)


Vielen lieben Dank
LG
Alexandra
Top
#6
Hallo Alexndra,

die gleiche Anzahl der Codezeilen wie bei Stefan, aber trotzdem ein klein wenig
einfacher beim Codieren, da Du innerhalb des Ereignisses den Namen nicht anpassen musst:

Code:
Private Sub TextBox5_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    färbe (ActiveControl.Name)
End Sub

Private Sub TextBox6_Exit(ByVal Cancel As MSForms.ReturnBoolean)
   färbe (ActiveControl.Name)
End Sub

Private Sub TextBox7_Exit(ByVal Cancel As MSForms.ReturnBoolean)
   färbe (ActiveControl.Name)
End Sub

Sub färbe(txtBo As String)
   If TextBox4.Value = "" Then
      Me.Controls(txtBo).BackColor = &HE0E0E0
   Else
      If Me.Controls(txtBo).Value <> "" Then
         Me.Controls(txtBo).BackColor = &HE0E0E0
      Else
         Me.Controls(txtBo).BackColor = &HC0FFFF
      End If
   End If
End Sub
Gruß Atilla
Top
#7
Hallo Atilla,

das geht sogar ohne die Name-Eigenschaft. Einfach den Namen der Textbox durch ActiveControl ersetzen.
Gruß Stefan
Win 10 / Office 2016
[-] Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:
  • cysu11
Top
#8
Hallo Stefan,

dann sag das doch gleich Idea
also dann so:

Code:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    färbe
End Sub

Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
   färbe
End Sub

Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
   färbe
End Sub

Sub färbe()
   If TextBox4.Value = "" Then
      ActiveControl.BackColor = &HE0E0E0
   Else
      If ActiveControl.Value <> "" Then
         ActiveControl.BackColor = &HE0E0E0
      Else
         ActiveControl.BackColor = &HC0FFFF
      End If
   End If
End Sub
Gruß Atilla
[-] Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:
  • cysu11
Top
#9
Hallo Atilla, hallo Steffl,



damit kann ich wunderbar leben, so werde ich es machen!


Vielen vielen Dank euch zwei
LG
Alexandra
Top


Gehe zu:


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