Hallo zusammen,
ich habe eine Plausibilitätsprüfung zwischen zwei Datumsangaben programmiert; wenn die Prüfung zutrifft, möchte ich, dass das betreffende Feld im Formular automatisch rot markiert wird. Hat jemand eine Idee, wie man das von VBA aus machen kann?
If Me.DateSComplet - DLookup ([DateAnDetails])", "tbl_F1AnimalDetails") < 26 Then
MsgBox "Study complection to early"
End If
Hallo,
du könntest die bedingte Formatierung anwenden oder beim Ereignis 'Beim Hingehen' mit deiner Prüfung die Hintergrundfarbe des Steuerelementes ändern.
Gruß Oma
wie soll der Ausdruck dann bei der bedingten Formatierung aussehen, wenn das zweite Datum in einer anderen Tabelle abgelegt ist?
Hallo,
sorry, meinte Ereignis "Beim Anzeigen"
bei der bedingten Formutierung Feld im Formular mit DLookup darstellen u. dann Differenz in Bedingung der bedingten Formatierung einsetzen!
Gruß Oma
Hallo,
wenn du z.B. lediglich einen roten Rahmen um dein Feld legen willst würde sich auch die Änderung der Rahmenfarbe anbieten.
Private Sub Form_Current()
If Me!DateSComplet - DLookup ([DateAnDetails])", "tbl_F1AnimalDetails") < 26 Then
Me!DateSComplet.BorderColor = vbRed
Else
Me!DateSComplet.BorderColor = vbGreen 'oder jede andere Farbe
End If
End Sub
Hallo Nordlicht ;D
wie auch immer du das machst, ob mit bedingter Formulierung oder beim Ereignis "Beim Anzeigen" ( Private Sub Form_Current()) die Hintergundfarbe ändern (oder Peters Vorschlag mit dem Rahmen) :
Ich würde immer den Vergleichswert (mit DLookup) und die Differenz im Formular darstellen u. das Feld mit der Differenz farbig kennzeichnen. Ich kenne Anendungen mit bedingter Formatierung und man fragt sich: was soll mir nun die Farbe des Datumsfeldes sagen?!
Das soll nur ein allgemeiner Gestaltungshinweis sein ;)
Gruß Oma
@oma
Zitatwas soll mir nun die Farbe des Datumsfeldes sagen
ich kann dir nur beipflichten - eine farbliche Kennzeichnung kann und sollte m.E. nur als Hervorhebung (im konkreten Fall - einer Unstimmigkeit) dienen.
Die eigentliche Information würde ich BENUTZERFREUNDLICH entweder über ein Label oder (wenn das Problem nur sporadisch auftritt) über eine MsgBox auch textmäßig bekanntgeben.
Ihr seid einfach super!!
Das farbliche Hervorheben eines Feldes soll wirklich nur als Userfreundlichkeit anggesehen werden und noch was, wenn ich die Daten schon mal eingegeben habe und den Datensatz nochmals öffne, sehe ich gleich, dass etwas nicht gestimmt hat, wenn ein Feld gleich rot markiert erscheint.
Man lernt hier echt sehr viel! ;D
Hm, habe Schwierigkeiten den Ausdruck unter bedingte Formatierung zu schreiben.
Wenn die VBA Code so aussah:
If Me.DateSComplet - DLookup("[DateAnDetails])", "tbl_F1AnimalDetails") < 26 Then
MsgBox "Study complection to early"
Soll die Syntax etwa so aussehen?
[DateSComplet] < 26 DLookup("[DateAnDetails])", "tbl_F1AnimalDetails")
Danke!
Hallo,
bist Du sicher, dass
ZitatIf Me.DateSComplet - DLookup("[DateAnDetails])", "tbl_F1AnimalDetails") < 26 Then
funktioniert??
Erklär mal genau(!) in Worten, wie die Berechnung ablaufen soll..
Syntaxtisch sollte die Zeile mindestens so lauten:
If Me.DateSComplet - DLookup("[DateAnDetails]
)", "tbl_F1AnimalDetails") < 26 Then
wobei Dlookup infolge des fehlenden Kriteriums den Wert des ersten Datensatzes aus der Tabelle liefert, der aber nicht der erste, in der Tabellen-Datenblattanzeige sichtbare sein muss.
In der Bedingten Formatierung sollte das so heißen:
Ausdruck ist: [DateSComplet] - DLookup("[DateAnDetails]"; "tbl_F1AnimalDetails") < 26
Ja, eine runde Klammer ist zu viel und am falschen Ort; habe mich hier verschrieben..
Die bedingte Formatierung funktioniert jetzt auch!
Herzlichen Dank!