Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 用于筛选透视表的宏_Vba_Pivot Table - Fatal编程技术网

Vba 用于筛选透视表的宏

Vba 用于筛选透视表的宏,vba,pivot-table,Vba,Pivot Table,我有一个数据集,我想点击列a中的一个单元格,它会过滤不同工作表上的透视表。到目前为止,我有以下代码: Option Explicit Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Selection.Count = 1 Then If Not Intersect(Target, Range("A2")) Is Nothing Then Sheet

我有一个数据集,我想点击列a中的一个单元格,它会过滤不同工作表上的透视表。到目前为止,我有以下代码:

Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Selection.Count = 1 Then
        If Not Intersect(Target, Range("A2")) Is Nothing Then           
            Sheets("Labor Detail").Select
            ActiveSheet.PivotTables("PivotTable1").PivotFields("WBS1").ClearAllFilters
            ActiveSheet.PivotTables("PivotTable1").PivotFields("WBS1").CurrentPage = Range("A2").Value 
               End If
    End If
End Sub
它能满足我的要求,但只适用于一个细胞。我希望能够单击列A中的任何单元格,并将单元格值筛选到透视表中。如何指定一个范围而不是一个单元格?

请尝试以下操作:

Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Column = 1 And Target.Value <> "" Then
        Sheets("Labor Detail").Select
        ActiveSheet.PivotTables("PivotTable1").PivotFields("WBS1").ClearAllFilters
        ActiveSheet.PivotTables("PivotTable1").PivotFields("WBS1").CurrentPage = Target.Value
    End If
End Sub
选项显式
专用子工作表\u选择更改(ByVal目标作为范围)
如果Target.Column=1且Target.Value为“”,则
工作表(“人工详细信息”)。选择
ActiveSheet.PivotTables(“数据透视表1”).PivotFields(“WBS1”).ClearAllFilters
ActiveSheet.PivotTables(“数据透视表1”).PivotFields(“WBS1”).CurrentPage=Target.Value
如果结束
端接头

我去掉了
Selection.Count=1
,因为我不认为这真的有什么用。相反,我正在针对
Target.Value
进行测试,以确保您有筛选数据透视表的依据。

您还应该尝试不使用Select。只需直接访问数据透视表,如:工作表(“人工明细”)。数据透视表(“数据透视表1”)。数据透视字段(“WBS1”)。