2014-07-09 4 views
0

위의 유명한 errore 때문에 코드를 작동시킬 수 없습니다. 나는 이전 게시물을 읽는 해결책을 찾을 수 없었으므로 누구나 나를 도울 수 있기를 바랍니다.error 1004 excel 2010 : pivotitem 클래스의 visible 속성을 설정할 수 없습니다.

다른 워크 시트 (ws)에 피벗 테이블 (pt)이 여러 개 있고 내가 만든 배열에 저장된 항목 목록이 있습니다. 배열의 항목 (코드 내의 listOffnet)을 제외한 pt의 모든 항목을 ON으로 설정하기위한 매크로를 작성했습니다. 모든 것이 제대로 작동합니다.

이제는 보완 조치를 취하고 싶습니다 : 배열에없는 모든 항목을 설정하십시오. 아쉽게도 오류가 발생합니다.

pvtItm.Visible = False 

감사합니다.

Sub ptFilterOffnet() 

Dim PvtTbl As PivotTable 
Dim pvtItm As PivotItem 
Dim pvtFld As String 
Dim listItem As Variant 
Dim listOffnet As Variant 
Dim lastRow As Integer 
Dim myws As String 

pvtFld = "CATEGORY_DESCRIPTION" 
myws = "GESTIONE_ADMIN" 

resetSlicers 'function resetting all slicers connected to pivot tables (all items ON) 

' Populate the array with some data in a specific range 
lastRow = Sheets(myws).Cells(Rows.Count, 10).End(xlUp).Row 
listOffnet = populateArray(myws, 3, lastRow, 10, 10) 

' All OFF but items within listOffnet 
For Each PvtTbl In Sheets("P1").PivotTables 
    For Each pvtItm In PvtTbl.PivotFields(pvtFld).PivotItems 
     For Each listItem In listOffnet 
      If pvtItm <> listItem Then 
       pvtItm.Visible = False 
      End If 
     Next  
    Next 
Next 
End Sub 

답변

0

대신 "오프"값의 범위를 복용하고 배열에 넣어의, 단지 각 루프를 들어 당신에 그 범위를 참조하십시오 : 이 내 코드입니다. 예를 들어, 나를 위해 일했다 :

For Each PvtTbl In Sheets("P1").PivotTables 
    For Each pvtItm In PvtTbl.PivotFields(pvtFld).PivotItems 
     For Each listItem In Range("OffList").Cells 
      If pvtItm <> listItem Then 
       pvtItm.Visible = False 
      End If 
     Next 
    Next 
Next 

차이는 세 번째 줄에 있습니다.

그래도 작동하지 않으면 changing the Sort parameter 또는 any of the proposed solutions in this thread을 시도해 볼 수 있습니다.