Office: (Office 2010) Bedingte Formatierung von Datenblättern mit VBA

Helfe beim Thema Bedingte Formatierung von Datenblättern mit VBA in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo, ich habe diverse Formulare (auch Unterformulare) in Datenblattsicht, bei denen einzelne Elemente (Spalten) abhängig von Werten des jeweiligen... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von TinuC, 21. Januar 2016.

  1. Bedingte Formatierung von Datenblättern mit VBA


    Hallo,

    ich habe diverse Formulare (auch Unterformulare) in Datenblattsicht, bei denen einzelne Elemente (Spalten) abhängig von Werten des jeweiligen Datensatzes dargestellt werden sollen, also typischer Anwendungsfall für Bedingte Formatierung.

    Problem 1: Die Bedingte Formatierung lässt keine Auswahl von Designfarben (also mit Referenz auf die Farbpalette des gewählten Designs) zu, so dass bei einem Wechsel des Designs die Farben der Bedingten Formatierung nicht angepasst werden.

    Problem 2: Bei der Bedingten Formatierung wird auch der Hintergrund mit der eingestellten Farbe überschrieben, was den Zeileneffekt durch eine alternative Hintergrundfarbe ("DatasheetAlternateBackColor") zunichte macht, weil die Bedingte Formatierung weder die alternative Hintergrundfarbe kontrolliert setzen lässt, noch das Überschreiben der Hintergrundfarbe abschalten lässt, um nur die Schriftattribute zu setzen.

    Idee deshalb: Stattdessen die Bedingte Formatierung mit VBA selbst stricken. Dazu habe ich eine Prozedur erstellt, die für die gewünschten Elemente Formatbedingungs-Objekte erstellt, in denen nur die anzupassenden Formatattribute (also z.B. ForeColor oder FontBold) gesetzt werden, nicht aber der Hintergrund, in der Hoffnung dass dieser damit unverändert erhalten bleibt. Das sieht im Kern so aus:

    Set objFormatCondition = ctl.FormatConditions.Add(acExpression, , Bedingung...)
    With objFormatCondition
    .FontBold = True
    ...

    Pustekuchen! Nach Ausführen der Prozedur werden die Formatbedingungen zwar wirksam, aber es werden auch die unabhängig definierten Hintergrundfarben überschrieben (offenbar mit dem Auto-Wert), was ja gerade unterbunden werden sollte. Um das zu bereinigen, kann man zwar mit

    .BackColor = frm.DatasheetBackColor

    die Farbe des Elementhintergrunds auf die Datenblatthintergrundfarbe setzen, aber für die alternative Hintergrundfarbe gibt es keine entsprechende Eigenschaft bei Formatbedingungsobjekten, so dass man den Hintergrund offenbar prinzipiell nicht mit alternierenden Farben darstellen kann, wenn man mit Formatbedingungen arbeitet.

    In der Einzelformularsicht ließe sich das elegant lösen, indem man die Hintergrundfarbe des Detailbereichs mit Designfarben besetzt und bei den mit Bedingter Formatierung modifizierten Steuerelementen die Hintergrundart auf "transparent" setzt. Dadurch wird die Zwangsbelegung des Hintergrunds durch die Bedingte Formatierung nicht wirksam. In der Datenblattsicht finde ich dafür keine passenden Eigenschaften, bzw. Elemente. Übersehe ich da etwas? Gibt es Ideen, wie man das Problem (möglichst elegant) lösen könnte?

    Zum Problem 2 (Designfarben):
    Designfarben lassen sich über das Eigenschaftsblatt des Formulars direkt den Steuerelementen zuordnen (genauer: die Referenz auf die Position der Farbpalette, so dass bei einem Wechsel des Designs die neuen Farben wirksam werden) oder per VBA mit Eigenschaften wie "ThemeFontIndex". Auch dies scheint mit Bedingter Formatierung nicht möglich, da hier offensichtlich nur Farbcodes zulässig sind.

    Um also auch die durch Bedingte Formatierung gesetzten Farben stimmig zum Design zu halten, muss man wohl vor der Definition der Formatbedingungsobjekte zuerst die Farben des aktuellen Designs auslesen und diese dann hartkodiert übernehmen. Bei jedem Designwechsel muss man die Formatbedingungsobjekte dann neu definieren, um die Farben des neuen Designs zu übernehmen.

    Geht denn das nicht einfacher?

    :)
     
  2. Hallo
    Muss es ein Datenblatt sein ?
    könnte es nicht ein Endlos- (Tabellarisches-) Formular sein?
     
    Lanz Rudolf, 23. Januar 2016
    #2
  3. Die Formulare sollen Unterformulare enthalten, die selbst wieder als Datenblätter (mit den gleichen Problemen) dargestellt werden sollen. Endlosformulare lassen dies ja wohl nicht zu.
     
  4. Bedingte Formatierung von Datenblättern mit VBA

    Servus TinuC,
    vielleicht hilft Dir das Ereignis "Beim Formatübertragen" des Detailbereichs (ab Acc2007 möglich)
    Da kannst Du dann auch beliebig viele bedingte Formatierungen erstellen.
    z.B.
    Code:
     
    Ohrkester, 23. Januar 2016
    #4
  5. Danke für den Tipp erstmal. Ich sehe aber noch nicht, wie mir das weiterhilft.

    Für mein Verständnis liegt das Problem beim gezielten Zugriff auf die Datenblatteigenschaften und nicht die Eigenschaften der Steuerelemente des Detailbereichs, also z.B. "DatasheetForeColor". Mit Bedingter Formatierung (auch in Form der Formatbedingungsobjekte) funktioniert dies zwar, zerschießt aber den Hintergrund. Diese Datenblatteigenschaften müssten aber für jeden Datensatz separat ermittelt werden, wofür mir sowohl das passende auslösende Ereignis als auch die geeignete Bedingung fehlt.

    Auch mit Detailbereich_Paint wird bestenfalls die Farbe des Datenblattfelds einheitlich gesetzt, wenn man statt "Me.Text41.ForeColor" "Me.DatasheetForeColor" verwendet.
     
  6. Hallo
    kannst Du einmal zeigen wie das aussehen sol (z.B. PrintScreen)
    oder wie ez jtzt bei Dir aussiet
     
    Lanz Rudolf, 24. Januar 2016
    #6
  7. \@TinuC:
    Zumindest hast Du damit eine mehr als 3 fach bedingte Formatierungsmöglichkeit und zusätzlich die Einsatzfähigkeit beliebiger Farbnuancen.
     
    Ohrkester, 24. Januar 2016
    #7
  8. Bedingte Formatierung von Datenblättern mit VBA

    \@Ohrkester: Das habe ich so aber auch und ist auch gar nicht mein Problem. *wink.gif*

    @Lanz Rudolf: Beispiel im Anhang:

    Ein Formular in Datenblattsicht mit Unterformularen über mehrere Ebenen. Auf oberster Ebene ist die alternierende Hintergrundfarbe zu sehen, die idealerweise auf allen Ebenen eingestellt sein sollte.

    Im ersten Unterformular ist die Bedingte Formatierung zu sehen. Die Hintergrundfarbe der Bedingten Formatierung ist manuell auf die Hintergrundfarbe des Datenblatts gesetzt. Wäre der Hintergrund des Datenblatts hier auch alternierend gesetzt, müsste man sich bei der Bedingten Formatierung für eine der beiden Farben entscheiden.

    Außerdem müsste man bei einem Designwechsel, der u.a. die Farben der Datenblätter aufeinander abgestimmt austauscht, die Farben der Bedingten Formatierung neu definieren, weil hier der Bezug auf die Design-Farbpalette nicht möglich ist.
     
  9. Hallo
    Dake für Dein Beispiel

    doch ich verstehe nicht ganz wo Dein problem ist !

    ich habe hir Muster
    kann Dir die MDB gerne hoch laden.
     
    Lanz Rudolf, 24. Januar 2016
    #9
  10. Deine Beispiele enthalten nur Endlosformulare, wo das Problem offenbar nicht besteht. Ich möchte aber - wie im Bild gut zu sehen - reichlich von Unterformularen Gebrauch machen, was mit Datenblättern sehr gut geht, mit Endlosformularen aber gar nicht. Datenblätter reagieren aber ganz anders auf die Formatierung und haben auch eigene Eigenschaften, die aber nicht so gut mit der Bedingten Formatierung zusammenspielen.

    Ich hatte gehofft das Problem mit meiner Beschreibung auf den Punkt gebracht zu haben. Was ist denn unklar geblieben?
     
  11. Genau das wohl.
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
  12. Das hätte eigentlich Beitrag #3 klarstellen sollen.
     
Thema:

Bedingte Formatierung von Datenblättern mit VBA

Die Seite wird geladen...
  1. Bedingte Formatierung von Datenblättern mit VBA - Similar Threads - Bedingte Formatierung Datenblättern

  2. Probleme mit bedingter Formatierung

    in Microsoft Excel Hilfe
    Probleme mit bedingter Formatierung: Hallo ihr Lieben, folgende Herausforderung: Ich möchte die Formatierung des Wertes in B7 (bzw. auch alle weiteren Werte in Spalte B) nach folgenden Bedingungen anpassen: 1. WENN C7<0,05 DANN...
  3. Bedingte Formatierung basierend auf Wert anderer Zelle

    in Microsoft Excel Hilfe
    Bedingte Formatierung basierend auf Wert anderer Zelle: Hallo zusammen, beim Erreichen des 18. Lebensjahres (Geburtsdatum Spalte D, Alter automatisch in Spalte E kalkuliert) soll eine bedingte Formatierung den Namen und Vornamen der Teilnehmer (Spalte...
  4. Anfängerfrage zur bedingten Formatierung

    in Microsoft Excel Hilfe
    Anfängerfrage zur bedingten Formatierung: Mal eine echte Anfängerfrage: Wenn ich in Excel (Mac) als bedingte Formatierung eine Formel verwenden möchte, muss ich immer folgende Schritte durchführen: -Bedingte Formatierung -Neue Regel -...
  5. Negative Datenbalken - bedingte Formatierung

    in Microsoft Excel Hilfe
    Negative Datenbalken - bedingte Formatierung: Liebes Forum! Ich habe in einer Tabelle positive und negative Prozentwerte. Diese Tabelle hat eine bedingte Formatierung mittels Datenbalken. Wie kann ich die negativen Balken in die gleiche...
  6. Formatierung eines Datumsfelds, wenn das gleiche Datum woanders erscheint

    in Microsoft Excel Hilfe
    Formatierung eines Datumsfelds, wenn das gleiche Datum woanders erscheint: Hallo! Hab leider zu meinem Problem bisher nichts gefunden. Ich baue eine Art Kalender, um eine Übersicht über Events + größere ToDos im Jahr zu haben - siehe Screenshot im Anhang. Im Screenshot...
  7. Bedingte Formatierung / Wiederholungen "ausblenden"

    in Microsoft Excel Hilfe
    Bedingte Formatierung / Wiederholungen "ausblenden": Einen schönen guten Tag, Bräuchte mal hilfe bei der Bedingen Formatierung. Ich würde gerne wiederholungen "ausblenden" (schriftfarbe) , so das immer nur der erste werd klar gezeigt wird sowohl...
  8. Bedingte Formatierung über gesamtes Datenblatt und selbiges Auswerten

    in Microsoft Excel Hilfe
    Bedingte Formatierung über gesamtes Datenblatt und selbiges Auswerten: Hallo und Danke im Vorfeld für jegliche Idee und Unterstützung. Ich benötige Unterstützung im Bereich Bedingte Formatierung, im speziellen geht es darum das ich täglich eine Bewertung...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden