Я пытаюсь, чтобы значение поля со списком было зависимым для фильтрации сводной таблицы.Приведенный ниже код работает нормально, если значение комбинированного списка совпадает с разделами фильтра для сводной таблицы, но это не так, поэтому это вызывает ошибку.
Private Sub UserForm_Initialize()
ComboBox1.AddItem "3(Facility Approved),4(Bid Appn Approved),12(Cancelled With Outs)"
ComboBox1.AddItem "3"
End Sub
Private Sub CommandButton1_Click()
Call Macro5
Dim sht As Worksheet, pflds As PivotFields, showItems As Boolean
Dim arr
With Worksheets("CT")
.Range("G1").Value = TextBox2.Value
.Range("C1").Value = TextBox1.Value
End With
arr = Split(ComboBox1, ",") 'make an array from the combobox value
'show only the values in arr for specific pivot fields
ShowOnlyThese Sheets("BP").PivotTables("PivotTable1").PivotFields("Facility_Status_Id"), arr
ShowOnlyThese Sheets("BC").PivotTables("PivotTable1").PivotFields("Facility_Status_Id"), arr
ActiveWorkbook.RefreshAll
Unload Me
ActiveWorkbook.RefreshAll
End Sub
Это код, который я пытался исправить, эту проблемуно я получаю ошибку.Любая помощь будет принята с благодарностью.
Private Sub UserForm_Initialize()
'list to be chosen in the combobox
ComboBox1.AddItem "3(Facility Approved),4(Bid Appn Approved),12(Cancelled With Outs)"
ComboBox1.AddItem "3"
End Sub
Private Sub CommandButton1_Click()
Call Macro5
Dim sht As Worksheet, pflds As PivotFields, showItems As Boolean
Dim arr
With Worksheets("Connection Totals")
.Range("G1").Value = TextBox2.Value
.Range("C1").Value = TextBox1.Value
End With
If ComboBox1.Value = "3(Facility Approved),4(Bid Appn Approved),12(Cancelled With Outs)" Then
arr = Array("3", "4", "12") 'make an array from the combobox value
Else
arr = Array("3")
'show only the values in arr for specific pivot fields
ShowOnlyThese Sheets("By Participants").PivotTables("PivotTable1").PivotFields("Facility_Status_Id"), arr
ShowOnlyThese Sheets("By Corporates").PivotTables("PivotTable1").PivotFields("Facility_Status_Id"), arr
End If
ActiveWorkbook.RefreshAll
Unload Me
ActiveWorkbook.RefreshAll
End Sub
'loop over all items in a pivotfield shows only those matching a value
Sub ShowOnlyThese(pf As PivotField, arrItems)
Dim pi As PivotItem, haveOne As Boolean
For Each pi In pf.PivotItems
On Error Resume Next
pi.Visible = Not IsError(Application.Match(pi.Value, arrItems, 0))
On Error GoTo 0
Next pi
End Sub