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 6/2011.

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

Zusammenfassung

Lernen Sie die neuen Funktionen der bedingten Formatierung unter Access 2010 kennen.

Techniken

Formulare, Steuerelemente, bedingte Formatierung

Voraussetzungen

Access 2010 und höher

Beispieldateien

BedingteFormatierung2010.accdb

Shortlink

www.access-im-unternehmen.de/806

Bedingte Formatierung unter Access 2010

André Minhorst, Duisburg

Bei der bedingten Formatierung hat sich unter Access 2010 eine Menge getan. Nicht nur, dass Sie nun bis zu 50 verschiedene Formatierungen samt Bedingung festlegen können - nein, ab jetzt können Sie auch Balkendiagramme entsprechend der in einem Feld enthaltenen Daten in Formularen und Berichten anzeigen. Und natürlich hat Access im Unternehmen auch herausgefunden, wie Sie die 50 Formatierungen per VBA für alle Konstellationen anlegen - das schien bis jetzt durch einen Bug nicht möglich zu sein.

In der Tat hat Microsoft da wohl vergessen, irgendeinen kleinen Schalter umzulegen: Wenn Sie über die Benutzeroberfläche mehr als drei bedingte Formatierungen anlegen, gelingt dies ohne Probleme.

Sollten Sie dies jedoch unter bestimmten Bedingungen per VBA probieren, was ja gerade bei bis zu 50 verschiedenen Formatierungen sinnvoll wäre, scheitern Sie bereits nach dem dritten Eintrag in die Formate-Liste. Doch eins nach dem anderen!

Anzahl bedingter Formatierungen erhöht

Unter Access 2010 können Sie nun nicht mehr nur drei, sondern gleich bis zu 50 bedingte Formatierungen definieren. Ein Beispiel für die neue Pracht zeigt Abb. 1. Wir haben dort für jede KategorieID eine eigene bedingte Formatierung angelegt.

pic001.png

Abb. 1: Das Kategorien-Feld zeigt für jede Kategorie eine andere Hintergrundfarbe an.

Wenn Sie das unter Access 2010 von Hand erledigen wollen, öffnen Sie das Formular oder den Bericht in der Entwurfsansicht und wählen im Ribbon den Eintrag Format|Steuerelementformatierung|Bedingte Formatierung an.

Alternativ ändern Sie die bedingte Formatierung zur Laufzeit, dann aber nur in der Datenblattansicht, und zwar im Ribbon-Bereich Datenblatt|Formatierung|Bedingte Formatierung. In den übrigen Ansichten lässt sich Access nicht zur Anzeige des Dialogs aus Abb. 2 überreden.

pic002.png

Abb. 2: Anlegen bedingter Formatierungen für ein Steuerelement

Nicht nur, dass ein entsprechender Eintrag zum Aufruf des Dialogs fehlt - auch das Absetzen eines RunCommand acCmdConditionalFormatting bringt den Dialog nicht zum Vorschein.

Doch schauen wir uns zunächst das Anlegen einer bedingten Formatierung an. Dazu klicken Sie im Manager für Regeln zur bedingten Formatierung auf die Schaltfläche Neue Regel.

Im nun erscheinenden Dialog geben Sie weitgehend die gleichen Informationen ein wie bereits in früheren Access-Versionen (s. Abb. 3).

pic004.png

Abb. 4: Einsatz von mehr als drei verschiedenen bedingten Formatierungen

Dabei gibt es grundsätzlich die folgenden Optionen:

  • Feldwert ist: Erlaubt die Angabe eines Vergleichsoperators und eines Vergleichswertes, mit dem Sie den jeweils angezeigten Feldwert in Relation stellen können.
  • Ausdruck ist: Ermöglicht das Eintragen eines beliebigen Ausdrucks. Beachten Sie, dass Sie Feldnamen in eckige Klammern setzen.
  • Feld hat Focus: Sorgt dafür, dass das jeweils aktive Feld mit der bedingten Formatierung ausgezeichnet wird.

Die Formatierungsmöglichkeiten haben sich nicht geändert. Neu ist hingegen im oberen Bereich die Möglichkeit, neben dem bisher bekannten Werte im aktuellen Datensatz prüfen oder einen Ausdruck verwenden auch noch die Variante Mit anderen Datensätzen vergleichen zu wählen - diese Option besprechen wir weiter unten.

Bis zu 50 Formatierungen ...

Zunächst einmal probieren wir aus, was Microsoft für Access 2010 verspricht: Sie können nun bis zu 50 bedingte Formatierungen für ein Steuerelement definieren! Dass dies tatsächlich funktioniert, erkennen Sie ansatzweise in Abb. 4 (wer die gedruckte Version dieses Beitrags liest, mache sich im online verfügbaren PDF ein Bild der verwendeten Farben).

pic003.png

Abb. 3: Anlegen einer bedingten Formatierung unter Access 2010

... auch per VBA?

Die Prozedur aus Listing 1 versucht, nicht nur eine, zwei oder drei, sondern vier oder mehr Formatierungen zu einem Steuerelement hinzuzufügen. Dabei steht das Feld cboKategorieID im Mittelpunkt: Es soll für jeden Wert, also für jede Kategorie, eine andere Hintergrundfarbe anzeigen.

Listing 1: Versuch, vier und mehr Formatierungen hinzuzufügen

Public Sub BedingteFormatierung()

    Dim db As DAO.Database

    Dim rst As DAO.Recordset

    Dim frm As Form

    Dim strForm As String

    Dim strControl As String

    Dim ctl As Control

    Dim i As Integer

    Dim objFormatCondition As FormatCondition

    strForm = "sfmArtikel"

    strControl = "cboKategorieID"

    DoCmd.OpenForm strForm, acViewDesign

    Set frm = Forms(strForm)

    Set ctl = frm(strControl)

    Set db = CurrentDb

    Set rst = db.OpenRecordset("SELECT * FROM tblKategorien", dbOpenDynaset)

    Do While Not rst.EOF

        i = i + 1

        Set objFormatCondition = ctl.FormatConditions.Add(acFieldValue, acEqual, rst!KategorieID)

        With objFormatCondition

            .BackColor = Choose(i, 967423, 62207, ...weitere Farbwerte)

        End With

        rst.MoveNext

    Loop

End Sub

Dazu durchläuft die Prozedur eine Datensatzgruppe mit allen Datensätzen der Tabelle tblKategorien (was keine 50 Datensätze sind, aber immerhin deutlich mehr als drei). Das Zielformular sfmArtikel und das betroffene Steuerelement cboKategorieID werden über entsprechende Objektvariablen zugreifbar gemacht. In der Do While-Schleife über alle Datensätze der Tabelle tblKategorien erfolgt schließlich jeweils ein Aufruf der Add-Methode der FormatConditions-Auflistung, der jeweils eine neue bedingte Formatierung anlegen soll.

Dabei werden die Art der bedingten Formatierung (hier acFieldValue, dies entspricht der Auswahl der Option Feldwert ist des Dialogs), der Vergleichsoperator sowie der Vergleichswert angegeben (die jeweilige KategorieID).

Der Verweis auf die neu erstellte Formatierung wird in der Variablen objFormatCondition gespeichert. Damit lassen sich weitere Informationen festlegen - wie etwa die gewünschte Formatierung.

In diesem Fall beschränken wir uns darauf, schlicht die Hintergrundfarbe auf eine mit einer Choose-Anweisung bereitgestellte Farbe einzustellen. Dabei wird für den ersten Wert von KategorieID der erste Farbcode verwendet und so weiter.

Die Laufvariable i wird für jede Kategorie um 1 erhöht und sorgt so für das Auswählen des jeweiligen Farbcodes aus der Liste.

Nach dem Start der Prozedur geschieht erstmal nichts. Ein Wechsel in die Formularansicht zeigt jedoch, dass das Anlegen der mehr als drei bedingten Formatierungen durchaus erfolgreich war.

Bug oder nicht Bug?

Zu Beginn dieses Beitrags gingen wir jedoch darauf ein, dass es unter bestimmten Umständen nicht möglich sei, mehr als drei bedingte Formatierungen anzulegen.

Auch in diversen Newsgroups und Foren wurde von diesem Bug berichtet. In der Tat ist es so, dass Sie zwar einfache Vergleiche mit dem Feldwert per VBA anlegen können. Wenn Sie jedoch per VBA eine bedingte Formatierung auf Basis eines Ausdrucks anlegen möchten, tritt beim vierten Eintrag ein Fehler auf (s. Abb. 5). Die fehlerhafte Anweisung sieht beispielsweise wie folgt aus:

pic005.png

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.