Access 2010 bedingte Formatierung in VBA eines Formulars
In einem Formular werden mir bsplw. 3 Datensätze angezeigt. Unter anderem ist das Feld "Liefertag" pro Tupel vorhanden.
Wie kann ich nun beim Form_Load erreichen, dass das Feld "Liefertag" in Abhängigkeit Zeitdifferenz zum Tagesdatum (datediff("d", Liefertermin.Value, Date) eingefärbt wird? Prinzipiell funktioniert der Code zum einfärben,
ABER: Es scheint mir so, als würde lediglich die erste Zeile geprüft und dann das Feld in den Folgezeilen ebenso mit der Farbe aus Zeile 1 eingefärbt.
Kann mir das jemand 'erklären' oder näherbringen. In Excel ist das relativ einfach, ich habe mich jetzt aber eben auch mal an Access herangewagt...
Wie kann ich nun beim Form_Load erreichen, dass das Feld "Liefertag" in Abhängigkeit Zeitdifferenz zum Tagesdatum (datediff("d", Liefertermin.Value, Date) eingefärbt wird? Prinzipiell funktioniert der Code zum einfärben,
ABER: Es scheint mir so, als würde lediglich die erste Zeile geprüft und dann das Feld in den Folgezeilen ebenso mit der Farbe aus Zeile 1 eingefärbt.
Kann mir das jemand 'erklären' oder näherbringen. In Excel ist das relativ einfach, ich habe mich jetzt aber eben auch mal an Access herangewagt...
Private Sub Form_Load()
Dim FC As FormatCondition
With Form_offeneWE.Liefertermin
.FormatConditions.Delete
Set FC = .FormatConditions.Add(acExpression, acLessThanOrEqual, datediff("d", Liefertermin.Value, Date), 2)
FC.BackColor = RGB(255, 48, 48)
Set FC = .FormatConditions.Add(acExpression, acGreaterThan, datediff("d", Liefertermin.Value, Date), 4)
FC.BackColor = RGB(255, 0, 0)
End With
End Sub
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 384069
Url: https://administrator.de/contentid/384069
Ausgedruckt am: 25.11.2024 um 10:11 Uhr
3 Kommentare
Neuester Kommentar
Servus,
kein Problem.
Grüße Uwe
kein Problem.
Private Sub Form_Load()
Dim fc As FormatCondition
With Liefertermin
.FormatConditions.Delete
With .FormatConditions.Add(acExpression, Expression1:="DateDiff(""d"",[Liefertermin],Date()) <= 2")
.BackColor = RGB(255, 48, 48)
.Enabled = True
End With
With .FormatConditions.Add(acExpression, Expression1:="DateDiff(""d"",[Liefertermin],Date()) > 4")
.BackColor = RGB(255, 0, 0)
.Enabled = True
End With
End With
End Sub
Zitat von @Aximand:
Verstehe ich noch nicht so ganz im Detail (das ist meinen rudimentären VBA Kenntnissen geschulder), aber immerhin funktioniert es!
Bei einer Expression findet der Vergleich in der Expression statt nicht mit dem Expression2 Parameter und das ganze muss ein String sein, damit der richtig in der Expression landet und nicht schon ausgewertet dort landet, genau das was du gerade falsch machst, du benutzt die DateAdd Funktion direkt und diese liefert als Expression nur das Ergebnis eines Vergleichs eines aktuellen Wertes der Tabelle zurück. Expression2 wird nur verwendet wenn als Vergleich "Between" etc. genutzt wird, also zwei Werte benötigt werden.Verstehe ich noch nicht so ganz im Detail (das ist meinen rudimentären VBA Kenntnissen geschulder), aber immerhin funktioniert es!
Viel fieser ist es wenn du die Formatcondition direkt in der Oberfläche eintippeln musst, da ist dann alles einzudeutschen inkl. Funktionen und sogar "Parameter" wie anstatt "d" dann "t", da bin ich früher auch immer drüber gestolpert.