Donnerstag, 8. März 2012
Von Microsoft ist man Benutzerunfreundlichkeit gewohnt, und so verhält es sich auch mit der bedingten Formatierung (Conditional Formatting) von Reporten in Microsoft Access: Der Wert eines Feldes kann mit den GUI-Tools nur auf drei Stati gleichzeitig geprüft werden.
Zum Glück kann man auf VBA ausweichen. Hierzu öffnet man die Design View des Reports, wählt die Sektion „Detail“ mit Klick auf dessen Balken aus, wechselt im Eigenschaftsfeld auf Events und erstellt dort für das Ereignis „On Format“ eine VBA-Prozedur mit dem Code Builder.
Dort kann man als geübter Entwickler dann mit dem Select Case-Konstrukt arbeiten:
Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)
Dim sStatus As Variant 'To account for null values
sWert = Me!Wert
Select Case sWert
Case "Yes"
' Grün
cColor = RGB(0, 255, 0)
Case "In most cases"
' Gelb
cColor = RGB(255, 255, 0)
Case "In almost half the cases"
' Orange
cColor = RGB(255, 215, 0)
Case "In a few cases"
' Fuchsia
cColor = RGB(255, 0, 255)
Case "No"
' Rot
cColor = RGB(255, 0, 0)
Case "Not applicable", "N/A"
cColor = RGB(192, 192, 192)
Case Else
cColor = RGB(255, 255, 255)
End Select
Debug.Print "Setting Color to " & cColor & " based on " & sWert
Me!Wert.BackColor = cColor
End Sub
Ein Nachteil hat das ganze aber: Die Hintergrundfarbe wird nur in der Druckvorschau angezeigt. Auch das wieder: Typisch Microsoft. Unbrauchbare Software aus dem letzten Jahrhundert.