arjoderoon
Gebruiker
- Lid geworden
- 2 mei 2007
- Berichten
- 476
Ik heb in een template een code om via vba mijn draaitabellen oplopend gesorteerd te krijgen. Dat is al eens in een ander topic aan de orde gekomen.
(topic link: http://www.helpmij.nl/forum/showthr...lgens-gebruiken?highlight=draaitabel+sorteren)
Dit betrof 1 draaitabel, maar nu heb ik 3 draaitabellen die ik gesorteerd wil hebben. Ik dacht dit via onderstaande code te doen:
Helaas gebeurt er dan niet wat ik graag zou willen dat er gebeurt. Mijn draaitabellen worden niet gesorteerd.
Als ik in vba via F8 de code stap voor stap langs loop, dan schiet hij naar end sub na de regel "For i = UBound(pivotnames) To LBound(pivotnames)".
Maar ik probeer te doorgronden waarom dit gebeurt.
Heb ik de pivotnames niet goed gedeclareerd?
edit:
Na lang puzzlen met verschillende mogelijkheden werkt dit nu voor mij:
(topic link: http://www.helpmij.nl/forum/showthr...lgens-gebruiken?highlight=draaitabel+sorteren)
Dit betrof 1 draaitabel, maar nu heb ik 3 draaitabellen die ik gesorteerd wil hebben. Ik dacht dit via onderstaande code te doen:
Code:
Sub sort()
Dim pivotnames As Variant
Dim i As Integer
Dim pvtField As PivotField
pivotnames = Array("Draaitabel3", "Draaitabel1", "Draaitabel4")
For i = UBound(pivotnames) To LBound(pivotnames)
For Each pvtField In Worksheets("blad5").PivotTables(pivotnames).RowFields
Worksheets("blad5").PivotTables(pivotnames).PivotFields(pvtField.Name).AutoSort _
xlAscending, pvtField.Name
Next pvtField
Next i
End Sub
Helaas gebeurt er dan niet wat ik graag zou willen dat er gebeurt. Mijn draaitabellen worden niet gesorteerd.
Als ik in vba via F8 de code stap voor stap langs loop, dan schiet hij naar end sub na de regel "For i = UBound(pivotnames) To LBound(pivotnames)".
Maar ik probeer te doorgronden waarom dit gebeurt.
Heb ik de pivotnames niet goed gedeclareerd?
edit:
Na lang puzzlen met verschillende mogelijkheden werkt dit nu voor mij:
Code:
Sub sort()
Dim i As Variant
Dim pvtField As PivotField
Dim ptname As String
For i = 1 To 4
If i = 2 Then
i = i + 1
Else
ptname = "Draaitabel" & i
For Each pvtField In Worksheets("blad5").PivotTables(ptname).RowFields
Worksheets("blad5").PivotTables(ptname).PivotFields(pvtField.Name).AutoSort _
xlAscending, pvtField.Name
Next pvtField
End If
Next i
End Sub
Laatst bewerkt: