Microsoft Excel

Herbers Excel/VBA-Archiv

Pivot überlappen beim Update

Betrifft: Pivot überlappen beim Update von: Chris
Geschrieben am: 08.10.2014 16:45:22

Hallo liebe Forumsmitglieder,
ich habe eine generelle Frage. Gibt es eine Möglichkeit um bei Neueinstellung der Filter einer Pivottabelle zu verhindern, dass sich diese dabei überlappen.

Habe schon das probiert das ScreenUpdating = False zu setzen, damit am Ende nur das fertig Ergebnis steht, aber leider scheint das auch nicht zu helfen.

Ein Workaround wäre natürlich mehr Zeilen einzufügen. Das wäre aber in meinem Fall mehr als 300 :(

Das generelle Problem ist ja, dass ich in VBA den Filter nicht für alle Pivotitems visible = False schalten kann und danach nur die ich möchte sondern ich muss ja erst alle aktivieren und dann die unerwünschten visible = False setzen?!

Danke für eure Hilfe
Gruß Chris

  

Betrifft: AW: Pivot überlappen beim Update von: fcs
Geschrieben am: 09.10.2014 08:25:07

Hallo Chris,

lasse zwischen den beiden Pivotberichten ausreichend Zeilen frei, so dass der Bricht ohne Filter dargestellt werden kann.

Nach dem setzen eines Filters blendest du dann die leeren Zeilen zwischen den Berichten aus.
vor dem Setzen eines Filters blendest du dann jeweils alle Zeilen ein.

Gruß
Franz


  

Betrifft: AW: Pivot überlappen beim Update von: Chris
Geschrieben am: 09.10.2014 09:39:41

Hi Franz,
danke für deine Antwort. Meinst du dann, ich sollte die Zeilen im Makro am Anfang einblenden lassen, dann die Pivoteinstellungen vornehmen und dann die Zeilen wieder ausblenden lassen im Makro?!

Grüße
Chris


  

Betrifft: AW: Pivot überlappen beim Update von: fcs
Geschrieben am: 09.10.2014 12:01:31

Hallo Chris,

ja, erst Zeilen einblenden, dann Filter setzen, dann Leerzeilen ausblenden.

Nachfolgend ein Makro zum ausblenden.

Gruß
Franz

Sub Pivot_Zeilenausblenden()
  'blendet die Leerzeilen zwischen 2 Pivotberichten auf dem aktiven Blatt aus
  Dim pvTab1 As PivotTable, pvTab2 As PivotTable
  Dim Zeile1 As Long, Zeile2 As Long, AnzahlZwischen As Long
  Dim wks As Worksheet
  
  AnzahlZwischen = 2 'Anzahl Leerzeilen, die zwischen den Pivotberichten angezeigt bleiben  _
sollen
  Set wks = ActiveSheet
  If wks.PivotTables.Count = 2 Then
    Set pvTab1 = wks.PivotTables(1)
    Set pvTab2 = wks.PivotTables(2)
    
    With pvTab1.TableRange2
      If .Row < pvTab2.TableRange2.Row Then
        Zeile1 = .Row + .Rows.Count
        Zeile2 = pvTab2.TableRange2.Row
      Else
        Zeile1 = pvTab2.TableRange2.Row + pvTab2.TableRange2.Rows.Count
        Zeile2 = .Row
      End If
    End With
    Zeile2 = Zeile2 - AnzahlZwischen - 1
    
    If Zeile2 >= Zeile1 Then
      With wks
        .Range(.Rows(Zeile1), .Rows(Zeile2)).Hidden = True
      End With
    End If
  End If
End Sub

Sub Pivot_Zeileneinblenden()
  'blendet alle Zeilen im aktiven Blatt ein
  Dim wks As Worksheet
  
  Set wks = ActiveSheet
  wks.Rows.Hidden = False
End Sub