Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Bedingte Formatierung mit Makro

Bedingte Formatierung mit Makro
29.07.2013 17:44:13
Felix
Hallo zusammen,
ich stehe seit ca. 2 Stunden vor folgendem Problem:
Ich habe mir eine schöne Pivottabelle gebastelt und auch bedingte Formatierungen eingebaut. Als ich nun die Neuentdeckung "Datenschnitt einfügen" fand und zusätzlich eingebaut habe, musste ich feststellen, dass die bed. Formatierungen in einer Pivot nicht übernommen werden, sobald man die Filter benutzt. Meine Idee war einfach einen Button einzubauen, mit dem ich ein aufgezeichnetes Makro starte, dass dann jedesmal die bed. Formatierung neu ausführt. Problem bei der Ausführung: es wird nicht nur die eine gewünschte Spalte, sondern es werden alle Spalten formatiert... :-(
Hier der Code, vllt hat ja jemand eine Idee:
Sub Makro10()
' Makro10 Makro
Columns("N:N").Select
Range("N3").Activate
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlBetween, _
Formula1:="=0,01", Formula2:="=1000"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Font
.Color = -16383844
.TintAndShade = 0
End With
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 13551615
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
Selection.FormatConditions.Add Type:=xlCellValue, Operator:=xlBetween, _
Formula1:="=-1000", Formula2:="=-0,01"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Font
.Color = -16752384
.TintAndShade = 0
End With
With Selection.FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 13561798
.TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = False
End Sub
Danke und Gruss
Felix

Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bedingte Formatierung mit Makro
31.07.2013 18:18:19
fcs
Hallo Felix,
Pivottabellen führen ein gewisses eigenleben. Speziell wenn man mit select-Anweisungen arbeitet
Pivottabellen haben bestimmte vordefinierte Zellbereiche, die man mit der entsprechenden Eigenschaft ansprechen kann.
Gruß
Franz
Hier ein paar Beispiele
Dim pvTab As PivotTable, rng As Range, Spalte As Long
Set pvTab = ActiveSheet.PivotTables(1)
ActiveSheet.Cells.FormatConditions.Delete
pvTab.PageRange.Select 'Nur wenn Berichtsfelder eingerichte sind
pvTab.PageRangeCells.Select
pvTab.DataLabelRange.Select
Spalte = Range("N1").Column
Set rng = pvTab.TableRange1.Columns(Spalte)
rng.Select
With pvTab.ColumnRange
.Select
Set rng = .Columns(.Columns.Count) 'letzte Spalte im Pivotbericht
rng.Select
End With
With pvTab.TableRange1 'ohne Berichtsfilter
.Select
Set rng = .Columns(.Columns.Count) 'letzte Spalte im Pivotbericht
rng.Select
End With
With pvTab.TableRange2 'mit berichtsfilter
.Select
Set rng = .Columns(.Columns.Count) 'letzte Spalte im Pivotbericht
rng.Select
End With
pvTab.DataBodyRange.Select
With pvTab.DataBodyRange
Set rng = .Columns(.Columns.Count) 'letzte Spalte im Pivotbericht
rng.Select
End With
With pvTab.RowRange
.Select
Set rng = .Columns(.Columns.Count) 'letzte Spalte im Pivotbericht
rng.Select
End With
Spalte = Range("N1").Column
Set rng = pvTab.DataBodyRange.Columns(Spalte)
rng.Select
With rng
.FormatConditions.Delete
.FormatConditions.Add Type:=xlCellValue, Operator:=xlBetween, _
Formula1:="=0,01", Formula2:="=1000"
.FormatConditions(.FormatConditions.Count).SetFirstPriority
With .FormatConditions(1).Font
.Color = -16383844
.TintAndShade = 0
End With
With .FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 13551615
.TintAndShade = 0
End With
.FormatConditions(1).StopIfTrue = False
.FormatConditions.Add Type:=xlCellValue, Operator:=xlBetween, _
Formula1:="=-1000", Formula2:="=-0,01"
.FormatConditions(.FormatConditions.Count).SetFirstPriority
With .FormatConditions(1).Font
.Color = -16752384
.TintAndShade = 0
End With
With .FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 13561798
.TintAndShade = 0
End With
.FormatConditions(1).StopIfTrue = False
End With
End Sub

Anzeige
AW: Bedingte Formatierung mit Makro
01.08.2013 12:16:13
Felix
Hallo Franz,
vielen lieben Dank für Deine Antwort! Leider habe ich so gut wie keine VBA Kenntnisse. Ich habe Deine Antwort so verstanden, dass Du mehrere Beispiele in den Code getan hast, ich jedoch nur einen Teil davon brauche. Nachstehend habe ich den Code, den ich jetzt eingefügt habe, wobei folgenede Fehlermeldung auftaucht: "Laufzeit 91: Objektvariable oder With-Blockvariable nicht festgelegt". Mein Ziel soll sein, dass ich nur bestimmte Spalten in der Pivot mit einer bed. Formatierung einfärbe.
Sub NEU()
Dim pvTab As PivotTable, rng As Range, Spalte As Long
Spalte = Range("N1").Column
Set rng = pvTab.DataBodyRange.Columns(Spalte)
rng.Select
With rng
.FormatConditions.Delete
.FormatConditions.Add Type:=xlCellValue, Operator:=xlBetween, _
Formula1:="=0,01", Formula2:="=1000"
.FormatConditions(.FormatConditions.Count).SetFirstPriority
With .FormatConditions(1).Font
.Color = -16383844
.TintAndShade = 0
End With
With .FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 13551615
.TintAndShade = 0
End With
.FormatConditions(1).StopIfTrue = False
.FormatConditions.Add Type:=xlCellValue, Operator:=xlBetween, _
Formula1:="=-1000", Formula2:="=-0,01"
.FormatConditions(.FormatConditions.Count).SetFirstPriority
With .FormatConditions(1).Font
.Color = -16752384
.TintAndShade = 0
End With
With .FormatConditions(1).Interior
.PatternColorIndex = xlAutomatic
.Color = 13561798
.TintAndShade = 0
End With
.FormatConditions(1).StopIfTrue = False
End With
End Sub
Ich hoffe, dass das jetzt nicht der totale Blödsinn ist und bitte um Nachsicht ;-)
viele Grüße
Felix

Anzeige
AW: Bedingte Formatierung mit Makro
01.08.2013 12:59:00
fcs
Hallo Felix,
es ist nicht so schlimm daneben gegangen. Du hast nur die Zeile vergessen in der dem Objekt, über das Excel sich beschwert, Leben eingehaucht wird.
Außerdem sollten evtl. im Blatt noch vorhandene bed. Formatierungen gelöscht werden, bevor man die neuen setzt. (Vermeidung von Datenmüll!)
Der Anfang des Makros sieht dann wie folgt aus.
Gruß Franz
Sub NEU()
Dim pvTab As PivotTable, rng As Range, Spalte As Long
Set pvTab = ActiveSheet.PivotTables(1)
ActiveSheet.Cells.FormatConditions.Delete
'ab hier dann der Code wie von dir vorbereitet.
Spalte = Range("N1").Column

Anzeige
AW: Bedingte Formatierung mit Makro
01.08.2013 14:48:31
Felix
Lieber Franz,
es hat funktioniert!! Tausend Dank dafür! Nur eine Sache ist merkwürdig: Die bedingte Formatierung wird immer für die rechts daneben stehende Spalte übernommen.
Gebe ich also folgendes an, dann wird die Spalte "O" formatiert:
Spalte = Range("N1").Column
Set rng = pvTab.DataBodyRange.Columns(Spalte)
rng.Select
Aber das soll mich gerade nicht weiter stören, denn das Ergebnis stimmt :-)
Danke nochmal!
vG
Felix

Anzeige
AW: Bedingte Formatierung mit Makro
01.08.2013 15:18:15
fcs
Hallo Felix,
der DataBodyRange einer PivotTabelle ist der Tabellenbereich, in dem die berechenten Daten dargestellt werden. Also der Bereich, ohne die Zeilen- und Spaltentitel. Die Zählung der Spalten beginnt hier nicht in Spalte A (=1) sondern rechts neben den Zeilentiteln. Deswegen die Verschiebung.
Gruß
Franz

Anzeige
AW: Bedingte Formatierung mit Makro
01.08.2013 15:33:50
Felix
na ich sehe, ich hab noch einges zu verstehen... ;-) Danke für Deine Zeit und bis zum nächsten Problem ;-)
Grüsse
Felix
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige