Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1324to1328
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
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

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

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

318 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige