Registriert seit: 28.04.2017
Version(en): 2010
Hallo ich habe mal wieder eine Frage
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
Registriert seit: 11.04.2014
Version(en): Office 2007
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
Registriert seit: 28.04.2017
Version(en): 2010
04.05.2017, 13:54
(Dieser Beitrag wurde zuletzt bearbeitet: 04.05.2017, 13:54 von Kaywarri124.)
HaySteffl,
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
Registriert seit: 11.04.2014
Version(en): Office 2007
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
Registriert seit: 28.04.2017
Version(en): 2010
Also das ist wohl dich schwieriger als ich dachte.
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
Registriert seit: 11.04.2014
Version(en): Office 2007
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
Registriert seit: 28.04.2017
Version(en): 2010
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.
Registriert seit: 10.04.2014
Version(en): 2016 + 365
04.05.2017, 15:23
(Dieser Beitrag wurde zuletzt bearbeitet: 04.05.2017, 15:23 von Rabe.)
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.
Registriert seit: 28.07.2015
Version(en): 365
(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
Registriert seit: 28.04.2017
Version(en): 2010
@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