Informationen und Beispiele zum Thema SpinButton | |
---|---|
![]() |
SpinButton-Seite mit Beispielarbeitsmappe aufrufen |
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