Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 1/2005.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

Daten formatieren nach Wunsch

André Minhorst, Duisburg

Bis zum Erscheinen von Access 2000 war einer der größten Wünsche der Access-Gemeinde die Formatierung einzelner Daten in Abhängigkeit von ihrem Inhalt. Dann war es endlich soweit: Microsoft erfüllte den Wunsch und spendierte Access eine Funktion namens Bedingte Formatierung (engl. Conditional Formatting). Damit lassen sich Daten in unterschiedlichen Schriften, Schriftarten oder Hintergrundfarben anzeigen - und das in Formularen und Berichten.

Bedingte Formatierung

Mit der Einführung der bedingten Formatierung steigert Microsoft die Benutzerfreundlichkeit und Ergonomie von Access-Anwendungen
enorm. Die Markierung von Daten mit bestimmten Eigenschaften ermöglicht das Ermitteln von wichtigen Daten aus größeren Datenmengen mit bloßem Auge, wo bisher Suchfunktionen und Abfragen nötig waren.

Wenn Sie beispielsweise gleichzeitig besonders teure und besonders billige Artikel in einem Formular anzeigen möchten, legen Sie einfach zwei Formatierungen für die entsprechenden Preisgrenzen fest - das Resultat zeigt Abb. 1.

Abb. 1: Teure Produkte sind fett gedruckt und billige mit einer anderen Hintergrundfarbe markiert.

Der vorliegende Beitrag stellt Ihnen die grundlegende Anwendung der bedingten Formatierung vor und zeigt Ihnen anschließend, wie Sie diese Funktion mit VBA noch flexibler in Ihren Formularen und Berichten einsetzen können.

Beispieldatenbank

Die Beispieldaten liefert die Nordwind-Datenbank. Wenn Sie die nachfolgenden Beispiele nachvollziehen möchten, erstellen Sie einfach eine neue Datenbank und importieren Sie die Tabellen Artikel, Lieferanten und Kategorien aus der mit Access mitgelieferten Nordwind-Datenbank. Das erledigen Sie ganz einfach:

  • Rufen Sie den Menübefehl Datei/Externe Daten/Importieren... auf.
  • Wählen Sie im nun erscheinenden Dialog Importieren die Datei Nordwind.mdb aus. Diese befindet sich normalerweise im Ordner Samples des Office-Verzeichnisses.
  • Markieren Sie auf der Registerseite Tabellen des nächsten Dialogs die Einträge Artikel, Lieferanten und Kategorien und klicken Sie auf OK. (
  • Access importiert nun die angegebenen Objekte. Erstellen Sie nun ein Beispielformular, mit dem Sie die nachfolgenden Beispiele ausprobieren können:

  • Wechseln Sie zur Registerseite Formulare des Datenbankfensters.
  • Klicken Sie auf die Schaltfläche Neu.
  • Wählen Sie im Dialog Neues Formular den Eintrag Autoformular: Datenblatt aus. Legen Sie außerdem die Tabelle Artikel als Datenherkunft fest.
  • Nach der Bestätigung der Eingaben mit der Schaltfläche OK legt Access das neue Formular an und öffnet es anschließend in der Datenblattansicht (s. Abb. 2).
  • Speichern Sie das Formular unter dem Namen frmArtikel. (
  • Abb. 2: Das Beispielformular in der Datenblattansicht

    Das Formular sieht zwar exakt wie eine Tabelle aus, aber es bietet wesentlich mehr Möglichkeiten: So lässt sich beispielsweise die bedingte Formatierung nicht auf Tabellen oder Abfragen, wohl aber auf Formulare in der Datenblattansicht anwenden.

    Bedingte Formatierung
    per Dialog

    Der Dialog zur bedingten Formatierung ist verhältnismäßig leicht zu durchschauen, sodass man diese Funktion durchaus auch Nicht-Accesslern zum Markieren von Daten bereitstellen kann - es gibt allerdings auch hier einige Fallstricke. In den nachfolgenden Abschnitten erfahren Sie alles über die Festlegung von Bedingungen für bestimmte Formatierungen.

    Aller Anfang ist leicht ...

    Mit dem soeben erstellten Formular können Sie nach Belieben bedingte Formatierungen festlegen. Dazu klicken Sie einfach auf das Feld, in dem Sie bestimmte Werte hervorheben möchten, und rufen dann den Menübefehl Format ( Bedingte Formatierung auf.

    Der nun erscheinende Dialog ist die Schaltzentrale der bedingten Formatierung (s. Abb. 3).

    Abb. 3: Festlegen einer bedingten Formatierung

    Als erstes Beispiel legen Sie nun fest, dass alle Preise höher als 15 EUR gelb unterlegt und fett gedruckt werden. Dazu belassen Sie den Inhalt des ersten Kombinationsfeldes bei dem Wert Feldwert ist, wählen im zweiten Kombinationsfeld den Eintrag Größer als aus und geben als Vergleichswert im Textfeld ganz rechts den Wert 15 ein. Schließen Sie die Eingabe mit einem Klick auf die Schaltfläche OK ab und betrachten Sie das Ergebnis (s. Abb. 4).

    Abb. 4: Ergebnis der festgelegten bedingten Formatierung

    Sie können nun für das gleiche Feld weitere Formatierungen festlegen. Öffnen Sie erneut den Dialog zum Festlegen der bedingten Formatierung und klicken Sie auf die Schaltfläche Hinzufügen >>. Unter dem Bereich für die erste Bedingung erscheint ein weiterer Bereich. Geben Sie hier beispielsweise an, dass alle Preise unter 5 EUR in roter, fetter Schrift angezeigt werden sollen. Die entsprechende Bedingung sieht wie in Abb. 5 aus. Sie erkennen bereits, dass sich mit wenig Aufwand aussagekräftige Ergebnisse erzielen lassen. Betrachten wir doch die vorhandenen Optionen ein wenig genauer, um alles aus den bedingten Formatierungen herauszuholen.

    Abb. 5: Festlegen einer zweiten Bedingung

    Abb. 6: Eine Bedingung mit unterer und oberer Grenze

    Abb. 7: Festlegen einer Bedingung durch einen Ausdruck

    Hinweis

    Die bedingte Formatierung lässt sich nur auf Text- und Kombinationsfelder anwenden. (

    Die Bedingung

    Beim Anlegen einer neuen Bedingung besteht diese aus drei Teilen. Das gilt allerdings nur, solange im linken Kombinationsfeld der Eintrag Feldwert ist ausgewählt ist. Es gibt dort noch zwei weitere Einträge: Ausdruck ist und Feld hat Fokus.

    Vergleich mit dem Feldwert

    Bleiben wir doch zunächst beim Eintrag Feldwert ist: In dem Fall können Sie im zweiten Kombinationsfeld einen der Vergleichsoperatoren Zwischen, Nicht zwischen, Gleich, Ungleich, Größer als, Kleiner als, Größer als oder gleich oder Kleiner als oder gleich angeben.

    Für die letzten sechs Möglichkeiten geben Sie im rechten Textfeld den gewünschten Vergleichswert an.

    Die ersten beiden Ausdrücke benötigen zwei Werte für eine brauchbare Bedingung: die untere und die obere Grenze (s. Abb. 6).

    Ausdrücke

    Wer sich einmal mit dieser zweiten Möglichkeit zum Anlegen von Bedingungen auseinandergesetzt hat, wird vermutlich nicht mehr auf die erste zurückgreifen wollen: Diese Variante ermöglicht die Formulierung eigener Bedingungen unter Zuhilfenahme aller in der Tabelle vorkommenden Felder und aller in Access zur Verfügung stehenden Funktionen.

    Mit das Einfachste, was Sie mit dieser Variante tun können, ist das Ersetzen einer "Feldwert ist..."-Bedingung. Zum Markieren aller Preise, deren Wert größer als 10,- EUR ist, verwenden Sie einfach den Ausdruck aus Abb. 7.

    Sie können allerdings noch einiges mehr damit anstellen: Wenn Sie beispielsweise wissen möchten, welcher Artikel in mehr als 20 Bestellungen berücksichtigt wurde, verwenden Sie den folgenden Ausdruck:

    DomAnzahl("[Bestell-Nr]";
    "Bestelldetails";
    "[Artikel-Nr]=" & [Artikel-Nr])>20

    Der Ausdruck zählt das Vorkommen der einzelnen Bestellnummern in der Tabelle Bestelldetails, und zwar für alle Bestellungen, die auch den aktuellen Artikel enthalten. Dass die Zählung sich auf die Artikel-Nr des jeweiligen Datensatzes beschränkt, liegt am letzten Teil der DCount-Funktion: "[Artikel-Nr]=" & [Artikel-Nr]

    Praxis-Tipp

    Wenn Sie in Ausdrücken für die bedingte Formatierung Feldnamen verwenden, müssen Sie solche, die nicht ausschließlich aus Buchstaben bestehen, unbedingt in eckige Klammern einschließen - wie hier im Falle der Felder [Artikel-Nr] und [Bestell-Nr]. (

    Feld hat den Fokus

    Die dritte und letzte Möglichkeit für eine bedingte Formatierung ist Feld hat Fokus. Damit erreichen Sie, dass das Feld, auf dem der Fokus liegt, in der gewünschten Formatierung angezeigt wird.

    Damit auch alle Felder beim Fokuserhalt markiert werden, müssen Sie die bedingte Formatierung natürlich auch für alle Felder festlegen.

    Weiter unten erfahren Sie, wie Sie dies einfach per VBA erledigen und sich damit eine Menge Handarbeit sparen können.

    Die Formatierung

    Die bedingte Formatierung ermöglicht die individuelle Verwendung folgender Steuerelementeigenschaften:

  • Hintergrundfarbe
  • Schriftfarbe
  • Fette Schrift
  • Kursive Schrift
  • Unterstrichene Schrift
  • Sperrung des Steuerelements
  • Das große Textfeld links von den Formatierungsoptionen zeigt eine Vorschau auf das gewählte Format.

    Anwendungsgebiete

    Auch wenn sich dieser Beitrag auf die Beschreibung der bedingten Formatierung in Zusammenhang mit Formularen beschränkt, ist diese Funktion auch in Berichten verfügbar.

    In Formularen können Sie sogar in allen zur Dateneingabe verwendbaren Formularansichten bedingte Formatierungen einfügen: in der Datenblattansicht, in der Formularansicht und in der Endlosansicht.

    Löschen einer
    bedingten Formatierung

    Bedingte Formatierungen lassen sich nicht deaktivieren, sondern nur löschen. Um eine von mehreren bedingten Formatierungen eines Steuerelements zu löschen, klicken Sie auf die entsprechende Schaltfläche. Es erscheint ein Dialog, in dem Sie die zu löschenden Bedingungen aktivieren und schließlich den Löschvorgang starten (s. Abb. 8).

    Abb. 8: Löschen von Bedingungen

    Wer zuerst kommt, mahlt zuerst

    Die freie Gestaltung der Bedingung lässt zu, dass mehrere für ein Feld zutreffende Bedingungen festgelegt werden können. Wenn Sie beispielsweise "Feldwert ist größer als 10" und "Feldwert ist größer als 20" als Bedingungen verwenden, treffen auf Felder mit einem Inhalt größer als 20 beide Bedingungen zu. Hier entscheidet dann die Reihenfolge der Bedingungen: Wenn zwei oder mehr Bedingungen für den Inhalt eines Feldes zutreffend sind, verwendet Access die erste angegebene Bedingung.

    Wenn Sie also tatsächlich die beiden beispielhaft angeführten Bedingungen verwenden möchten, sollten Sie die Bedingung "Feldwert ist größer als 20" als erste und "Feldwert ist größer als 10" als zweite Bedingung angeben.

    Sonst können Sie aufgrund der Formatierung nur erkennen, ob ein Wert größer als 10 ist; Werte über 20 führen nicht zu der angegebenen Formatierung.

    Abb. 9: Die bedingte Formatierung lässt nur drei Zustände je Feld zu.

    Weniger ist mehr

    Wer ein wenig mit der bedingten Formatierung herumspielt, macht schnell eine einschränkende Erfahrung: Nach drei Formaten je Feld ist nämlich Schluss.

    Die Hinzufügen-Schaltfläche wird deaktiviert und weitere Bedingungen lassen sich nicht integrieren (s. Abb. 9). Das ist vielleicht auch gar nicht schlecht, denn es gibt sicher einige Fans von farbigen Darstellungen, die es ansonsten übertreiben würden. Es lassen sich allerdings für jedes Feld drei Bedingungen festlegen; für ausreichend Möglichkeiten zur farblichen Gestaltung ist also gesorgt.

    Probleme mit Lookup-Feldern

    Die Artikel-Tabelle enthält zwei Felder mit Lookup-Daten: Lieferanten und Kategorien. Die beispielsweise im Feld Kategorien angezeigten Einträge wie Getränke, Süßwaren oder Milchprodukte sind in einer eigenen Tabelle gespeichert; das eigentliche Feld der Tabelle Artikel ist über den Primärschlüssel der Tabelle Kategorien mit dem entsprechenden Wert verknüpft.

    Es gehört zu den großen Vorzügen von Access, dass diese Felder in Tabellen, Abfragen und Formularen den aus der verknüpften Tabelle ausgewählten Wert anstelle des nackten Primärschlüssels anzeigen.

    Bei der bedingten Formatierung führt das allerdings zu Problemen: Legen Sie einmal für das Feld Kategorien in unserem Beispielformular ein Kriterium wie "Feldwert ist gleich Milchprodukte" an. Sie erhalten postwendend eine Fehlermeldung mit dem Hinweis, dass das Automatisierungsobjekt "Milchprodukte" nicht vorhanden ist - mit dieser Meldung können nur die wenigsten etwas anfangen.

    Auch der Versuch, den Ausdruck wie bei String-Kriterien in Abfragen in Anführungszeichen zu setzen, bringt nicht das gewünschte Resultat. Als Ergebnis bleibt immerhin die Fehlermeldung aus, aber die gewünschte Formatierung ist auch nicht zu sehen. Die Lösung ist einfach: Die Kriterien der bedingten Formatierung müssen sich auf den eigentlichen Feldinhalt beziehen, also auf den Zahlenwert in der Tabelle Artikel, der den entsprechenden Datensatz der Tabelle Kategorien repräsentiert.

    Werfen wir also einen Blick in die Tabelle Kategorien: Der Kategoriename Milchprodukte entspricht beispielsweise der Kategorienummer 4. Und tatsächlich: Die Bedingung "Feldwert ist gleich 4" führt zur Markierung der Felder, die den Wert Milchprodukte anzeigen.

    Public Sub BedingteFormatierungAnlegen()

        Dim frm As Form

        Dim ctl As Control

        DoCmd.OpenForm "frmArtikel"

        Set frm = Forms!frmArtikel

        Set ctl = frm.Controls("Einzelpreis")

        With ctl.FormatConditions

            .Add acFieldValue, acGreaterThan, 10

            .Item(0).FontBold = True

        End With

    End Sub

    Quellcode 1

    Public Sub FeldHatFokusHinzufuegen(strFormularname _
        As String)

        Dim ctl As Control

        Dim frm As Form

        DoCmd.OpenForm strFormularname, acDesign

        Set frm = Forms(strFormularname)

        For Each ctl In frm.Controls

            If ctl.ControlType = acTextBox Or _
                ctl.ControlType = acComboBox Then

                ctl.FormatConditions.Add acFieldHasFocus

                With ctl.FormatConditions(0)

                    .FontBold = True

                    .BackColor = 65535

                End With

            End If

        Next ctl

        DoCmd.Save acForm, strFormularname

        DoCmd.Close acForm, strFormularname

    End Sub

    Quellcode 2

    Bedingte Formatierung per VBA

    Das Access-Objektmodell hält für Textfelder und Kombinationsfelder selbstverständlich auch Anweisungen zum Hinzufügen, Bearbeiten und Löschen von bedingten Formatierungen bereit.

    Bedingte Formatierungen lassen sich wie viele andere Eigenschaften von Steuerelementen ganz einfach anpassen.

    Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

    Sind Sie Abonnent?Jetzt einloggen ...
     

    Kompletten Artikel lesen?

    Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

    E-Mail:

    © 2003-2015 André Minhorst Alle Rechte vorbehalten.