2015-03-31 129 views
0

我有一系列的切片器控制一些數據透視表,這反過來又產生一些餅圖。從所選擇的切片器項目中,我想自動篩選基礎數據集以彙總用於生成餅圖的信息。到目前爲止,我已經設法生成下面的代碼,我承認我已經從另一篇文章中收集了這裏:AutoFilter Criteria Using Array (Error) - Too Large String? 下面的代碼將AutoFilter數據集,但只使用切片機中選擇的最後一個項目,而不是任何其他選擇,即如果所有切片機的項目被選中,自動過濾器僅使用最後一個項目而不是完整系列進行過濾。看起來數組元素沒有按預期工作。 任何援助感激地接受。 謝謝。基於切片器選擇VBA自動過濾數據集

Sub FilterData() 
Dim sArr() As String 
Dim sCache As SlicerCache 
Dim wb As Workbook 
Set wb = ThisWorkbook 
Set sCache = wb.SlicerCaches("Slicer_Unit") 
    For Each sItem In ActiveWorkbook.SlicerCaches(sCache.Name).SlicerItems 
     If sItem.Selected = True Then 
      ReDim Preserve sArr(0 To sCount) 
      sArr(sCount) = sItem.Name 
      sCount = sCount + 1 
     End If 
    Next sItem 
Sheets("Sheet1").Activate 
ActiveSheet.Range("$A$1:$Z$50000").AutoFilter Field:=1, Criteria1:=sArr() 
ReDim sArr(0 To 0) 
End Sub 

回答

0

您需要指定使用Operator參數提供的標準類型。更改線路

ActiveSheet.Range("$A$1:$Z$50000").AutoFilter _ 
    Field:=1, _ 
    Criteria1:=sArr() 

ActiveSheet.Range("$A$1:$Z$50000").AutoFilter _ 
    Field:=1, _ 
    Criteria1:=sArr(), _ 
    Operator:=xlFilterValues 
+0

傑夫,太感謝你了;您的解決方案已解決我的問題。你不會相信我用這個玩了多久。 Slàintemhath! – GMcNaugh 2015-04-01 07:23:52

+0

很高興幫助! – Geoff 2015-04-02 12:23:58