Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Bedingte Formatierung in Pivot_NICHT in SubTotals?

Betrifft: Bedingte Formatierung in Pivot_NICHT in SubTotals? von: Andreas Hanisch
Geschrieben am: 05.06.2008 19:25:38

Hallo Herber Fans,

ich habe heute einen Code für die bedingte Formatierung in Pivottabellen weitestgehend abgeschlossen und getestet. Den habe ich nicht allein hinbekommen, sondern Franz und Renee haben tatkräftig unterstützt. Was mir nun aufgefallen ist: Die bedingte Formatierung erstreckt sich bei diesem Code auch auf die Subtotals der Pivotfelder im Datenbereich.
Ich habe nun überlegt, wie noch die Prüfung einzufügen wäre, ob es sich um eine SubTotal Zeile handelt oder nicht und dann dort keine bedingte Formatierung zu setzen.
Wenn das von der Laufzeit her zu lange wäre, dann könnte man alternativ auch überlegen, nach dem abgeschlossenen Makro für die bedingte Formatierung ein Makro durchlaufen zu lassen, welches in den SubTotals Zeilen dann wiederum die Formatconditions mit .delete wieder raus nimmt. Aber das erscheint mir nicht optimal, erst rein, dann raus?!
Hat jemand eine Idee für den ersten Ansatz?

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

Vielen Dank für Eure Ideen und Anregungen.

Grüße, Andreas

  

Betrifft: AW: Bedingte Formatierung in Pivot_NICHT in SubTot von: fcs
Geschrieben am: 06.06.2008 12:58:23

Hallo Andreas,

die Grundlösung (siehe mein Vorschlag von gestern) ist wie so oft schnell gefunden.
Aber bis in einer Pivot-Tabelle ein Makro rund läuft muss man so manche Fehlerprüfung einbauen.

Die Subtotals gehören zum Datenbereich des Feldes. Man kann zwar fesstellen ob für ein Feld Subtotals aktiv sind, aber es ist sehr umständlich, vor dem bedingten Formatieren den Datenbereich ggf. anzupassen. Deshalb mein Vorschlag, die Subtotals in einer separaten Routine am Ende abzuarbeiten.

Gruß
Franz

Sub BedingtesFormat_Advanced_2()
 ' ....
'Hier dein vorhandener Code
End If
Call NoFormatConditionSubtotals(objPivotTable:=pvTable)
Application.ScreenUpdating = True
End Sub

Sub NoFormatConditionSubtotals(objPivotTable As PivotTable)
  'Zeilenfelder - bedingte Formatierung bei Subtotals entfernen
  Dim objPivotFeld As PivotField
  Dim Element As Variant, strMsgBox As String
  On Error GoTo Fehler
  For Each objPivotFeld In objPivotTable.RowFields
    'Überprüfung, ob Teilergebnisse für das Feld auf "Keine" eingestellt ist, _
      d.h. alle Subtotal-Optionen haben den Wert False
    For Each Element In objPivotFeld.Subtotals
      If Element = True Then
        objPivotTable.PivotSelect "'" & objPivotFeld & "'[All;Total]", xlDataOnly
        Selection.FormatConditions.Delete
        Exit For
      End If
    Next
Resumefehler:
  Next
Fehler:
  If Err.Number <> 0 Then
    strMsgBox = strMsgBox & "ggf. steht die Option ""Teilergebnis"" für  Feld: """ _
      & objPivotFeld.Name & """ nicht auf ""keine""!" & vbLf _
        & "Fehler Nr. " & Err.Number & vbLf & Err.Description
      Resume Resumefehler
  End If
'1. Zelle der Pivottabelle selektieren
  objPivotTable.PivotSelect "", xlOrigin
  ActiveCell.Select
  If strMsgBox <> "" Then
    MsgBox strMsgBox, vbOKOnly, "Pivot Tabelle-bedingte Formatierung"
  End If
End Sub




  

Betrifft: AW: Bedingte Formatierung in Pivot_NICHT in SubTot von: Andreas Hanisch
Geschrieben am: 09.06.2008 14:16:40

Hallo Franz,

vielen Dank für Deine Code Lösung. Das mit dem PivotSelect als Weg, um via Selection die FormatOptionen zu löschen ist clever. Direkt ist es ja nicht möglich. Das war mir auch neu. Aber Dein Code läuft gut durch. Es ist übersichtlicher, wenn die SubTotals ausgenommen sind.
So langsam bin ich mit meinen Code Ideen durch. Ich will sie noch konsolidieren und verbessern, so daß die Pivot Tabellen durch dezente VBA Unterstützung noch mächtiger werden.

Vielen Dank Dir für Deine tatkräftige und qualitativ hochwertige Unterstützung.

Grüße aus Berlin,
Andreas Hanisch


 

Beiträge aus den Excel-Beispielen zum Thema "Bedingte Formatierung in Pivot_NICHT in SubTotals?"