Microsoft Excel

Herbers Excel/VBA-Archiv

Dreifach Bedingte Formatierung über VBA in Pivot

Betrifft: Dreifach Bedingte Formatierung über VBA in Pivot von: Andreas Hanisch
Geschrieben am: 03.06.2008 17:53:16

Hallo Herber Fans,

mit Hilfe des Forums konnte ich schon die Idee der bedingten Formatierung in einer Pivottabelle mit Hilfe einer Inputbox realisieren. Diese Bedingte Formatierung wird über VBA nach dem Prinzip „Zellwert ist gleich“ für jedes Feld im Pivot Datenbereich erstellt. Tatkräftig unterstütz hat dabei Franz (fcs)!
Was mir in den letzten Tagen jedoch aufgefallen ist:

Da die bedingte Formatierung als Verweis auf eine Zelle angelegt wird, greift sie auch, wenn der Zellwert 0 oder LEER ist. Das ist an sich auch korrekt. Optimal wäre es jedoch, wenn die Bedingte Formatierung nicht fix nur auf den Zellwert referenziert, sondern über eine Formel auch noch prüft, ob der Referenzwert ungleich 0 und ungleich LEER ist. Als Trockenübung habe ich das schon realisieren können.

In diesem Fall wird die Zelle „F4“ dreifach bedingt formatiert: "=UND($G$33<>0;$G$33<>"""";F4>$G$33)". „$G$33“ ist wieder die Zelle, die den Referenzwert enthält.

Und hier der erste Versuch, das in eine Form zu überführen, die vom Makro als Formatbedingung verstanden wird:


.FormatConditions.Add Type:=xlExpression, Formula1:= "=UND("&bedformaddress1&""<>0;""&bedformaddress1&"<>"""";"&pvField&">"&bedformaddress1&")"


Ich hatte auch schon mit „AND“ probiert, aber die Formel muß ja für eine deutsche Excel Applikation lesbar sein. Ich vermute also „UND“ ist schon korrekt. Auch in eine Zelle habe ich es schon eingegeben, um meine Schreibweise mit den Operatorenzeichen zu überprüfen. Aber ich bekomme es leider nicht hin, daß diese Formel über das Makro korrekt in die bedingte Formatierung geschrieben wird. Im VBA Editor blieben alle meine Versuche rot eingefärbt.
Ist es überhaupt möglich, eine solche diffizile bedingte Formatierung über VBA zu realisieren.

https://www.herber.de/bbs/user/52793.xls

Ich würde mich sehr über Eure Ideen und Anregungen freuen, die zur Lösung beitragen.

Viele Grüße,

Andreas Hanisch

  

Betrifft: AW: Dreifach Bedingte Formatierung über VBA in Piv von: Renee
Geschrieben am: 04.06.2008 09:25:17

Hi Andreas,

Mit folgender Anpassung deines Codes, läuft Bed.Formatierung 1. Die 2te entsprechend anpassen:

 Dim rC as Range
....
....
    For Each pvField In pvTable.DataFields
      For Each rC In ActiveSheet.Range(pvField.DataRange.Address)
        With rC
        .FormatConditions.Delete
        .FormatConditions.Add Type:=xlExpression, _
                 Formula1:="=UND(" & BedFormadress & "<>0;" & _
                           BedFormadress & "<>"""";" & _
                           rC.Address & ">" & BedFormadress & ")"
            With .FormatConditions(1).Font
             .Bold = True
             .ColorIndex = 5
            End With
        End With
      Next
    Next



GreetZ Renée


  

Betrifft: AW: Dreifach Bedingte Formatierung über VBA in Piv von: Andreas Hanisch
Geschrieben am: 04.06.2008 14:14:44

Hallo Renée,

vielen Dank für Deine Antwort. Ich habe es in meinen Code integriert und auch für zwei Optionen zum Laufen bekommen. Funktioniert super.
Was ich nun noch einbauen wollte, war eine Prüfung, die zählt, wie viele Zellen, über den Range der Inputbox erfaßt werden. Wenn diese mehr als zwei, dann kommt eine Messagebox die informiert, daß nur zwei Optionen möglich sind (pos./ neg.).
Ich habe aber nun leider den Effekt, daß die Inputbox sich nicht mehr über „Abbrechen“ oder Schließkreuz beenden läßt, sobald die Prüfung der Zellen Anzahl einmal erfolgte. Ich hänge dann in einer Schleife fest. Ich habe schon geguckt, ob irgendwo eine IF Schleife nicht korrekt abgeschlossen wurde, aber konnte nichts finden.
Liegt es an der Sprungmarke?
Auch ist das Phänomen, daß bei zwei markierten Zellen im Range beide Formatierungen sauber eingestellt werden. Wähle ich nur eine, wird die andere Formatierung, die dann ja überflüssig ist, nicht weggenommen.
Wäre es günstiger mit Case Select zu arbeiten?

https://www.herber.de/bbs/user/52813.xls

Vielen Dank für Deine Meinung.

Grüße, Andreas


  

Betrifft: AW: Dreifach Bedingte Formatierung über VBA in Piv von: Renee
Geschrieben am: 04.06.2008 14:31:29

Hi again,

Nach der 'Warnung'-Msgbox hilft diese Zeile:

Set BedFormZelle = Nothing



GreetZ Renée


  

Betrifft: AW: Dreifach Bedingte Formatierung über VBA in Piv von: Andreas Hanisch
Geschrieben am: 04.06.2008 15:03:26

Hi Renée,

Danke Dir für Deine Hilfe! Das wars gewesen. Es läuft nun alles genial durch.


Einen Schönen Tag Dir noch, Grüße

Andreas Hanisch


 

Beiträge aus den Excel-Beispielen zum Thema "Dreifach Bedingte Formatierung über VBA in Pivot"