2016-12-21 11 views
6

मैं PivotItem.Visible = False बनाना चाहते, लेकिन मैं एक त्रुटि मिलती रहती है = PivotItem.Visible सेट करते समय PivotItem वर्ग के दर्शनीय गुण सेट करने में असमर्थ:झूठी

Unable to set the Visible property of the PivotItem class

मैं सब समाधान मैं इंटरनेट में पाया की कोशिश की लेकिन

pt.PivotCache.MissingItemsLimit = xlMissingItemsNone

: कोई भी काम करने के लिए

Sub FloorCompareSetter() 

    Dim pt As PivotTable 
    Dim pf As PivotField 
    Dim pi As PivotItem 
    Dim PivotSheet As Worksheet 

    Set PivotSheet = ThisWorkbook.Worksheets("PIVOT") 
    PivotSheet.PivotTables("PivotTable5").RefreshTable 

    Set pt = PivotSheet.PivotTables("PivotTable5") 
    pt.PivotCache.MissingItemsLimit = xlMissingItemsNone 

    Set pf = pt.PivotFields("Period") 

    For Each pi In _ 
     pt.PivotFields("Period").PivotItems 
     Select Case pi.Name 
      Case Is = "1601A" 
       pi.Visible = True 
      Case Else 
       pi.Visible = False 'error 
     End Select 
    Next pi 

End Sub 

मैं मेज और इस लाइन ताज़ा की कोशिश की, लेकिन अभी भी काम नहीं कर रहा लगता है

यहाँ मेरी पाइवट टेबल की एक तस्वीर है:

enter image description here

क्या मैं गलत कर रहा हूँ और मैं इस समस्या को कैसे हल कर सकते हैं?

+0

मैंने इसे प्रश्न में शामिल किया- 'पिवोट इटिम क्लास की दृश्यमान संपत्ति सेट करने में असमर्थ' –

उत्तर

7

यदि आप किसी भी अक्ष (पंक्तियों, स्तंभों, फ़िल्टर) पर सभी आइटम छिपाने का प्रयास करते हैं तो आपको यह त्रुटि मिल जाएगी। आप जाल एक ही वस्तु के PivotItems.Count संपत्ति और करने के लिए अपने PivotField वस्तु की HiddenItems.Count संपत्ति की तुलना करके अपने कोड में इस त्रुटि वाकई देखने से संग्रह की अंतिम आइटम हटाने की कोशिश कर नहीं कर रहे हैं कर सकते हैं:

में

तो अपने मामले बयान, आप की तरह कुछ के साथ अद्यतन के साथ की जगह ले सकता:

Select Case pi.Name 
    Case Is = "1601A" 
     pi.Visible = True 
    Case Else 
     If pf.HiddenItems.Count < (pf.PivotItems.Count - 1) Then 
      pi.Visible = False 
     Else 
      MsgBox "Cannot hide all the items on this axis" 
      Exit For '<~~ break the loop to stop the MsgBox popping up 
     End If 
End Select 

ध्यान दें कि पिवट तालिका से छेड़छाड़, जबकि एक्सेल आप एक धुरी से पिछले आइटम को हटाने के लिए अनुमति नहीं दी जाएगी - ठीक बटन विकलांग हो जाएगा:

enter image description here

+0

यह हमेशा इस संदेश बॉक्स को लाता रहता है! –

+0

मैंने लूप को तोड़ने के लिए कोड अपडेट किया जब यह उस बिंदु को हिट करता है जहां यह छिपा हुआ कोई और आइटम सेट नहीं कर सकता है। –

+0

इसका उपयोग कर कोड को तोड़ने से पहले तोड़ सकता है और मुझे वह कॉलम दिखा सकता है जिसे मैं चाहता हूं –

0

मैं

pi.Visible = False 'error

से पहले

On Error Resume Next

कहा कि यह अब काम करता है!

संबंधित मुद्दे