通过在单元格中输入值来更改数据透视表过滤器

时间:2013-09-12 21:41:59

标签: vba excel-vba excel-2007 pivot-table excel

我一直在寻找答案,事实上我使用的代码来自这个网站。我有一个VBA用于更改PivotTable过滤器,方法是将值输入到单独的单元格中,如下所示:

Sub Worksheet_Change(ByVal Target As Range)

If Not Application.Intersect(Target, Sheets("Dashboard").Range("Lane1")) Is Nothing Then
Sheets("Dashboard").PivotTables("PivotTable1").PivotFields("TLEG"). _
    ClearAllFilters
Sheets("Dashboard").PivotTables("PivotTable1").PivotFields("TLEG").CurrentPage _
    = Sheets("Dashboard").Range("Lane1").Value
End If

End SUb

代码工作正常。它允许我输入值并相应地过滤,但是当我删除单元格中的值时,它不会过滤“all”。相反,我遇到的问题是当我删除单元格中的值时抛出运行时错误“1004”。我命中了它,它给了我答案。但是错误不断出现。

当VBA出现时,我几乎是一个新生儿,所以可能是因为我错过了一些明显的东西。

1 个答案:

答案 0 :(得分:2)

Sub Worksheet_Change(ByVal Target As Range)

    Dim rng As Range

    Set rng=Me.Range("Lane1")
    If Not Application.Intersect(Target, rng) Is Nothing Then
        With Sheets("Dashboard").PivotTables("PivotTable1").PivotFields("TLEG")
            .ClearAllFilters
            If Len(rng.Value)>0 Then  .CurrentPage = rng.Value
        End With 
    End If

End SUb