Hallo,
ich habe folgendes VBA-Makro im Internet gefunden und auf meine Beispiel Datei abgeändert.
Ich möchte auf der Basis, der in einem bestimmten Bereich gespeicherten Informationen, den
entsprechenden Filter in der Pivot-Tabelle mit diesem Makro erzeugen.
Wie gesagt mit der Beispieldatei klappt das. Wenn ich jedoch dieses Makro auf eine Power-Pivot
übertrage, welche ihre Daten mit einer OLAP-Abfrage aus einer SQl-Datenbank bezieht
bekomme ich bei der Zeile:
den Fehler: "Laufzeitfeher '1004', Die Visible Eigenschaft des PivotItem-Objektes kann nicht festgelegt werden."
Was mache ich falsch ?
Wie muss der Code abgeändert werden ?
Viele liebe Grüße
Manfred
ich habe folgendes VBA-Makro im Internet gefunden und auf meine Beispiel Datei abgeändert.
Ich möchte auf der Basis, der in einem bestimmten Bereich gespeicherten Informationen, den
entsprechenden Filter in der Pivot-Tabelle mit diesem Makro erzeugen.
Visual Basic-Quellcode
- Sub Nur_bestimmte_PivotItems_anzeigen()
- Dim vArray As Variant
- Dim i As Integer, j As Integer
- Dim pt As PivotTable
- Dim pf As PivotField
- Sheets("auswahl").Select
- vArray = Range("b2:b4")
- Sheets("pivot").Select
- Set pt = Application.ActiveSheet.PivotTables(1)
- Set pf = pt.PivotFields("Name")
- pf.ClearAllFilters
- With pf
- For i = 1 To pf.PivotItems.Count
- j = 1
- Do While j <= UBound(vArray, 1) - LBound(vArray, 1) + 1
- If pf.PivotItems(i).Name = vArray(j, 1) Then
- pf.PivotItems(pf.PivotItems(i).Name).Visible = True
- Exit Do
- Else
- pf.PivotItems(pf.PivotItems(i).Name).Visible = False
- End If
- j = j + 1
- Loop
- Next i
- End With
- End Sub
Wie gesagt mit der Beispieldatei klappt das. Wenn ich jedoch dieses Makro auf eine Power-Pivot
übertrage, welche ihre Daten mit einer OLAP-Abfrage aus einer SQl-Datenbank bezieht
bekomme ich bei der Zeile:
den Fehler: "Laufzeitfeher '1004', Die Visible Eigenschaft des PivotItem-Objektes kann nicht festgelegt werden."
Visual Basic-Quellcode
- Sub Nur_bestimmte_PivotItems_anzeigen_2tenS()
- Dim vArray As Variant
- Dim i As Integer, j As Integer
- Dim pt As PivotTable
- Dim pf As PivotField
- Sheets("Kost_Liste").Select
- vArray = Range("b2:b5")
- Sheets("tot_cost_act_mon").Select
- Set pt = Application.ActiveSheet.PivotTables(1)
- Set pf = pt.PivotFields("[Cost].[Cost Center Id].[Cost Center Id]")
- pf.ClearAllFilters
- With pf
- For i = 1 To pf.PivotItems.Count
- j = 1
- Do While j <= UBound(vArray, 1) - LBound(vArray, 1) + 1
- If pf.PivotItems(i).Name = vArray(j, 1) Then
- pf.PivotItems(pf.PivotItems(i).Name).Visible = True
- Exit Do
- Else
- pf.PivotItems(pf.PivotItems(i).Name).Visible = False
- End If
- j = j + 1
- Loop
- Next i
- End With
- End Sub
Was mache ich falsch ?
Wie muss der Code abgeändert werden ?
Viele liebe Grüße
Manfred