我有两个不同来源的两个观点。两个源都有一个公共列“位置”。我创建了两个切片器,并且工作正常。我现在想要的是,不使用两个切片器,而是仅使用一个。当我在切片器中为PivotTable1选择一个位置时,它也应该在PivotTable2中实现选择。
我写了下面的代码:
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
Dim sc As SlicerCache
Dim si As SlicerItem
Dim sValue As String
On Error Resume Next
Application.Volatile
Set sc = ThisWorkbook.SlicerCaches("Slicer_Location")
For Each si In oSc.SlicerItems
If si.Selected Then
sValue = si.Name
End If
Next
MsgBox (sValue)
Set sc = ThisWorkbook.SlicerCaches("Slicer_Location1")
For Each si In sc.SlicerItems
If si.Caption = sValue Then
si.Selected = True
Else
si.Selected = False
End If
Next
End Sub
msgbox将正确的值显示为在“ Slicer_Location”切片器中选择的切片器项目。 msgbox行中的代码发布后,它会显示“正在运行Slicer操作...”和“正在计算枢轴值...”,并刷新屏幕不少时间,而excel却被挂起。
我也尝试了以下选项,但没有任何结果:
Dim pt As PivotTable
Set pt = ActiveSheet.PivotTables("pivot7")
pt.PivotFields("Location").PivotFilters.Add2 Type:=xlCaptionEquals, Value1:=sValue
我没有找到问题所在,需要您的帮助。