Microsoft Excel

Herbers Excel/VBA-Archiv

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

Pivot: Nummer (Index) des ausgewählten PivotItems | Herbers Excel-Forum


Betrifft: Pivot: Nummer (Index) des ausgewählten PivotItems von: B.Paulus
Geschrieben am: 22.01.2010 08:49:28

Hallo liebe Mitstreiter,

ich habe folgendes Problem in einer Pivot Tabelle.

Ich möchte ein PivotField (Woche) über einen SpinButton steuern. Hierzu frage ich den aktuellen Wert über .PivotFields("Woche").CurrentPage.Name ab. Aber welche Nummer .PivotItems(??) hat dieser Wert ?

Aktuell behelfe ich mir mit einer Schleife, um an diesen Wert zu kommen..

In diesem Falle wurde der Button "down" gedrückt.

<pre>Private Sub Woche_SpinDown()

Dim lngEinträge As Long
Dim lngIndex As Long
Dim pf As PivotField

Set pf = PivotReport.PivotFields("Woche")

lngEinträge = pf.PivotItems.Count

For lngIndex = 1 To lngEinträge
If pf.CurrentPage = "(All)" Then
pf.CurrentPage = pf.PivotItems(lngEinträge).Name
Exit For
ElseIf pf.PivotItems(lngIndex).Name = pf.CurrentPage And lngIndex > 1 Then
pf.CurrentPage = pf.PivotItems(lngIndex - 1).Name
Exit For
End If
Next

End Sub</pre>

Gibt es einen kürzeren & schnelleren Weg ? Sowas wie .CurrentPage.index ?

Lieben Dank
Bernd

  

Betrifft: AW: Pivot: Nummer (Index) des ausgewählten PivotItems von: fcs
Geschrieben am: 24.01.2010 18:24:54

Hallo Bernd,

wenn du den aktuellen Index in einer modulweiten Variablen zwischenspeicherst, dann sollte es ohne die Schleifen gehen. Da die Variable nach dem Öffnen der Datei Wert 0 hat, wird bei Betätigen des Spinbuttons immer je nach Richtung das 1. oder letzte Element angezeigt. Dies kannst du verhindern, wenn du den Spinbutton mit einer Zelle verknüpfst und den Zellwert als Speicher benutzt.

Gruß
Franz

ungetestet:

Option Explicit
Private PageWocheIndex As Long

Private Sub Woche_SpinDown()
  Dim pf As PivotField
  Set pf = PivotReport.PivotFields("Woche")
  PageWocheIndex = PageWocheIndex - 1
  If PageWocheIndex < 1 Then PageWocheIndex = pf.PivotItems.Count
  pf.CurrentPage = pf.PivotItems(PageWocheIndex).Name
End Sub
Private Sub Woche_SpinUp()
  Dim pf As PivotField
  Set pf = PivotReport.PivotFields("Woche")
  PageWocheIndex = PageWocheIndex + 1
  If PageWocheIndex > pf.PivotItems.Count Then PageWocheIndex = 1
  pf.CurrentPage = pf.PivotItems(PageWocheIndex).Name
End Sub


'oder mit verknüpfter Zelle des Spinbuttons
'oder mit verknüpfter Zelle - F1 ist die mit dem Spinbutton verknüpfte Zelle
Private Sub Woche_SpinDown()
  Dim pf As PivotField, Zelle As Range
  Set Zelle = Range(Me.Woche_SpinDown.LinkedCell.Address)
  Set pf = PivotReport.PivotFields("Woche")
  Zelle.Value = Zelle.Value - 1
  If Zelle.Value < 1 Then Zelle.Value = pf.PivotItems.Count
  pf.CurrentPage = pf.PivotItems(Zelle.Value).Name
End Sub
Private Sub Woche_SpinUp()
  Dim pf As PivotField, Zelle As Range
  Set Zelle = Range(Range(Me.Woche_SpinUp.LinkedCell.Address))
  Set pf = PivotReport.PivotFields("Woche")
  Zelle.Value = Zelle.Value + 1
  If Zelle.Value > pf.PivotItems.Count Then Zelle.Value = 1
  pf.CurrentPage = pf.PivotItems(Zelle.Value).Name
End Sub



Beiträge aus den Excel-Beispielen zum Thema "Pivot: Nummer (Index) des ausgewählten PivotItems"