[英]Excel 360 VBA to change pivot table filter
我正在嘗試使用 VBA 更改使用“將此數據添加到數據模型”功能設置的數據透視表上的過濾器,該功能將讀取包含要過濾的項目的列表框的選擇。 我首先錄制了一個宏,看看會發生什么,然后得到了這個:
ActiveSheet.PivotTables("Pivottable1").PivotFields("[Range 1 1].[Quarter].[Quarter]").VisibleItemsList = _
Array("[Range 1 1].[Quarter].&[1Q20]", "[Range 1 1].[Quarter].&[3Q20]")
我的問題是動態設置可以包含任意數量項目的數組。 我需要做類似下面的事情,但每次都附加到數組中,這不會:
For x = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(x) = True Then
myArray = Array("[Range 1 1].[Quarter].&[" & ListBox1.List(x) & "]")
End If
Next x
ActiveSheet.PivotTables("Pivottable1").PivotFields("[Range 1 1].[Quarter].[Quarter]").VisibleItemsList = myArray
我測試了其他不起作用的方法:
' This didn't work:
Set myArray = CreateObject("System.Collections.ArrayList")
myArray.Add "[Range 1 1].[Quarter].&[1Q20]"
' This method didn't work either
Dim myArray(2) As Variant
myArray2(0) = "1Q20"
myArray2(1) = "2Q20"
我需要用我可以動態設置的東西替換Array("[Range 1 1].[Quarter].&[1Q20]", "[Range 1 1].[Quarter].&[3Q20]")
。 關於我如何做到這一點的任何想法?
不確定你需要什么,但試試這樣的:
Dim myArray() As String,k as integer
ReDim myArray(ListBox1.ListCount-1)
k = -1
For x = 0 To ListBox1.ListCount - 1
If ListBox1.Selected(x) = True Then
k = k + 1
myArray(k) = "[Range 1 1].[Quarter].&[" & ListBox1.List(x) & "]"
End If
Next x
ReDim Preserve myArray(k)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.