2016-04-15 14 views
5

में चयनित तत्व लौटाएं मेरे पास 'Slicer_HeaderTitle' नामक एक स्लाइसर है। मुझे बस चयनित तत्व के मूल्य के साथ वीबीए में एक चर को मंद करने में सक्षम होना चाहिए। मेरे पास एक समय में केवल एक तत्व चुना जाएगा।एक्सेल वीबीए - स्लाइसर

मुझे वीबीए के माध्यम से गतिशील रूप से मेरे स्लाइसर से तत्वों का चयन और चयन करने में बहुत सारी समस्याएं आई हैं, क्योंकि मेरी पिवट तालिका बाहरी डेटा-स्रोत से जुड़ी है। मुझे नहीं पता कि यह इस सटीक उदाहरण के लिए प्रासंगिक है, लेकिन यह तालिका एक ही बाहरी डेटा-स्रोत से जुड़ा हुआ है।

मेरे पास कोड की एक पंक्ति थी, जो इस मान को वापस कर सकती थी, लेकिन अब मुझे लगता है कि आप स्लाइसर में प्रत्येक तत्व के माध्यम से लूप की आवश्यकता है और जांचें कि यह चयनित है या नहीं। मुझे इससे बचने की उम्मीद है, क्योंकि मेरे पास एक समय में केवल 1 चयनित तत्व है।

enter image description here

' This is what I'm trying to achieve. 
Dim sValue as String 
sValue = ActiveWorkbook.SlicerCaches("Slicer_HeaderTitle").VisibleSlicerItems.Value 

msgbox(sValue) 
'Returns: "Uge 14 - 2016 (3. Apr - 9. Apr)" 

वर्तमान स्थिति:

enter image description here

उत्तर

1

त्रुटि खोजने के लिए ठीक है, हम, वापस एक कदम उठाने मेरी समारोह हटा सकते हैं और आइटम के माध्यम से लूपिंग की कोशिश करेंगे:

Dim sC As SlicerCache 
Dim SL As SlicerCacheLevel 
Dim sI As SlicerItem 
Set sC = ActiveWorkbook.SlicerCaches("Slicer_Dates_Hie") 
Set SL = sC.SlicerCacheLevels(1) 
For Each sI In SL.SlicerItems  
    sC.VisibleSlicerItemsList = Array(sI.Name) 
Next 
+0

विस्तृत उत्तर के लिए धन्यवाद। मुझे एक छोटी सी समस्या है। मैं संदेश प्राप्त करता रहता हूं "कोई आइटम नहीं चुना गया"। – TobiasKnudsen

+0

जो वास्तव में सहायक नहीं है, प्रत्येक के लिए debug.print osi.Name जोड़ें और देखें कि आपके पास स्लाइसर में मौजूद प्रत्येक तत्व है, तो जांचें कि चयनित व्यक्ति ने = सही या नहीं चुना है या नहीं। –

+0

मैंने मूल पोस्ट के नीचे अपने कोड और त्रुटि की एक तस्वीर जोड़ दी है! – TobiasKnudsen

2

यह मैं क्या किया है: मुझे एक बहुत मदद करने के लिए डॉक्टर Oswaldo को

Public Function GetSelectedSlicerItems(SlicerName As String) As String 
Dim SL As SlicerCacheLevel 
Dim sI As SlicerItem 

Set SL = ActiveWorkbook.SlicerCaches(SlicerName).SlicerCacheLevels(1) 
For Each sI In SL.SlicerItems 
    If sI.Selected = True Then 
     GetSelectedSlicerItems = (sI.Value) 
    End If 
Next 
End Function 


Dim sValue As String 
sValue = GetSelectedSlicerItems("Slicer_HeaderTitle") 

धन्यवाद!