Textbox Hintergrund abhängig von
#1
Hallo ich habe mal wieder eine Frage Blush

Wie kann ich es erreichen das meine TextBox sich Rot färbt wenn das Datum "MMM YYYY" kleiner als heute ist.

vielen dank.
ich habe alles durch forstet und nichts gefunden sollte ja nicht so schwer sein. :22:

schönen Abend noch
Top
#2
Hallo,

vielleicht so?
Code:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
   If IsDate(TextBox1.Value) Then
      If Format(TextBox1.Value, "MMMM YYYY") < Format(Now, "MMMM YYYY") Then
         TextBox1.BackColor = vbRed
      End If
   End If
End Sub
Gruß Stefan
Win 10 / Office 2016
Top
#3
HaySteffl, Undecided Huh

leider nein, die TextBox färbt sich zwar Rot aber sie wird nicht wieder Weiß.

Und es wäre auch Perfekt wenn er die Abfrage macht beim öffnen der Userform1 und nicht nur beim verlassen der TextBox
Top
#4
Hallo,

das macht natürlich nur Sinn, wenn beim Öffnen der Userform die TextBox gefüllt wird.

Code:
Private Sub UserForm_Initialize()
  
   'viel weiterer Code unter anderem das Befüllen der Textbox
   If IsDate(TextBox1.Value) Then
      If Format(TextBox1.Value, "MMMM YYYY") < Format(Now, "MMMM YYYY") Then
         TextBox1.BackColor = vbRed
      Else
         TextBox1.BackColor = &H80000005
      End If
   Else
      TextBox1.BackColor = &H80000005
   End If
End Sub
Gruß Stefan
Win 10 / Office 2016
Top
#5
Also das ist wohl dich schwieriger als ich dachte. Dodgy

Code:
'Startroutine, wird ausgeführt bevor die Eingabemaske angezeigt wird
Private Sub UserForm_Initialize()
 
If nächster_termin = "" Then 'hier wird geprüft, ob in der Textbox was eingetragen wurde oder nicht
   nächster_termin.BackColor = RGB(255, 0, 0)
   Else
   nächster_termin.BackColor = RGB(0, 255, 0)
   Exit Sub
End If

 
  Dim lZeile As Long
 
    'Alle TextBoxen leer machen
    LaufendeNummer = ""
    txt_Nachname = ""
    txt_Vorname = ""
    txt_DG = ""
    txt_TE = ""
    txt_PK = ""
    txtstatus = ""
    txtStatusUnterlagen = ""
    nächster_termin = ""
    Me.txtG20 = vbNullString
    Me.txtg24 = vbNullString
    Me.txtG25 = vbNullString
    Me.txtg26 = vbNullString
    Me.txtG26_2 = vbNullString
    Me.txtG29 = vbNullString
    Me.txtG31 = vbNullString
    Me.txtG33 = vbNullString
    Me.txtG37 = vbNullString
    Me.txtG41 = vbNullString
    Me.G46 = vbNullString
   
 
    'In dieser Routine laden wir alle vorhandenen
    'Einträge in die ListBox1
    ListBox1.Clear 'Zuerst einmal die Liste leeren
   
    lZeile = 7 'Start in Zeile 2, Zeile 1 sind ja die Überschriften
    'Schleife solange etwas in der ersten Spalte in Tabelle 1 drin steht
    Do While Trim(CStr(Tabelle1.Cells(lZeile, 2).Value)) <> ""
   
 
       
        'Aktuelle Zeile in die ListBox eintragen
        ListBox1.AddItem Trim(CStr(Tabelle1.Cells(lZeile, 2).Value))
       
        lZeile = lZeile + 1 'Nächste Zeile bearbeiten
       
    Loop

     
End Sub
 Die Daten werden umgewandelt in ein Datum, wenn ich MM/YYYY eingebe wird daraus MMM YYYY. Irgendwie erkennt er nicht das Datum in der TextBox.
Die Daten holt sich die Userform aus der Tabelle1. Dort werden die Daten auch richtig markiert. >=Heute() Rot
Formatierung für die Zelle
=(J7<>"")*(J7<=HEUTE())
Hier ist meine Datei:
http://www.clever-excel-forum.de/attachm...?aid=11119
Top
#6
Hallo,

ich glaube, so ganz verstehst Du es nicht. :20: Das Initialize-Ereignis der Userform tritt dann ein wenn die Userform in den Speicher geladen wird. Jetzt die Frage: Ist da schon die TextBox nächster_Termin gefüllt? Und Du was willst Du TextBoxen leeren, die noch gar nicht gefüllt sind?
Gruß Stefan
Win 10 / Office 2016
Top
#7
Ja ich bin da echt ein Leihe was das angeht. Aber trotzdem danke.


Nein ich möchte das die TextBox G20 sich Rot färbt wenn das eingetragene Datum vergangen ist. Wenn nichts drin steht oder es in der Zukunft liegt soll es einfach weiß bleiben.
Top
#8
Hi,

(04.05.2017, 14:31)Kaywarri124 schrieb:  Die Daten werden umgewandelt in ein Datum, wenn ich MM/YYYY eingebe wird daraus MMM YYYY. Irgendwie erkennt er nicht das Datum in der TextBox.

hatten wir das nicht neulich erst:
Eine Textbox enthält Text (drum heißt die auch so)! Alles, was in einer Textbox steht oder rückgelesen wird, wird nicht als Datum = Zahl erkannt, denn Text ist keine Zahl!
Und MMM JJJJ aus der Tabelle rückgelesen ist eben Text und kein Datum mit Tag Monat Jahr.
Top
#9
(04.05.2017, 15:23)Rabe schrieb: Und MMM JJJJ aus der Tabelle rückgelesen ist eben Text und kein Datum mit Tag Monat Jahr.

Hi Rabe,

vom Prinzip her hast Du irgendwie recht, wenn man nicht in den Prozess eingreift. ;)
Aber in der Tabelle steht ein Datum mit Format MMM JJJJ. Dieses also als Datum eingelesen und mit MMM JJJJ formatiert dargestellt.

Beim Schreiben vom Form in die Zelle zurück wird aus dem Textboxinhalt wieder ein Datum generiert.
In der Textbox im BeforeUpdate Ereignis wird dies ebenso gehandelt.
Genau das hatte ich ihm als Beispiel an einer Textbox so eingebaut.

Für seinen 'FarbDekoWunsch' muss man also nur an zwei Stellen in den Prozess eingreifen, beim Laden (hier bei Listbox1_Click) und im BeforeUpdate-Ereignis. Wobei man mit 'Heute' sorgfältig umgehen muss, da alle Daten mit dem ersten des Monats festgelegt werden.


Gruß Carsten
Top
#10
@Rabe

hi, ja das weiß ich noch, dachte nur das es daher jetzt geht, da das Format geändert wurde.

Aber ich habe jetzt eine Lösung gefunden. Ich mach das nicht über die UserForm. Aber danke!!!!

schön Abend noch
Top


Gehe zu:


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