0

Excel のピボット テーブルは、VBA でコーディングする際の頭痛の種です。

各ピボットテーブルをループしてからピボットフィールドをループし、「(空白)」である各ピボットアイテムを位置1または最後の位置に移動するVBAコードが必要です。

ご協力いただきありがとうございます!

For Each pt In ws.PivotTables

pt.RefreshTable
pt.PivotCache.MissingItemsLimit = xlMissingItemsNone

For Each pf In pt.PivotFields

For Each pi In pf.PivotItems

If pi.Caption = "(blank)" Then

pi.position = 1 ' <-- Error 2024, not available? 

If pi.Visible = True Then
pi.Visible = False
End if 

Exit For
End If

Next pi 
Next pf
Next pt 
4

1 に答える 1

2

私の限られたテストでは、これはエラーがなく、機能します。

Sub HideAndMoveTheBlanks()

Dim pt As Excel.PivotTable
Dim pf As Excel.PivotField
Dim pi As Excel.PivotItem

For Each pt In ws.PivotTables
    pt.RefreshTable
    pt.PivotCache.MissingItemsLimit = xlMissingItemsNone
    For Each pf In pt.PivotFields
        On Error Resume Next
        Set pi = pf.PivotItems("(blank)")
        On Error GoTo 0
        If Not pi Is Nothing Then
            pi.Position = 1
            pi.Visible = False
            Set pi = Nothing
            Exit For
        End If
    Next pf
Next pt
End Sub
于 2012-05-24T05:06:41.713 に答える