如何在用户窗体VBA Excel 2013中设置数据透视表的filter

我想用一个用户窗体的date设置数据透视表的filter。 用户strDateSelected = dtpDate.Value的date是strDateSelected = dtpDate.Value

我的代码不起作用,我不知道为什么。 有没有人看到这个问题?

 Private Sub dtpDate_Change() Call ExecuteRefresh End Sub Private Sub ExecuteRefresh() Dim pvt As PivotTable Dim pf As PivotField Dim strDateSelected As String Dim strCurrentFV As String Set pvt = Worksheets("Sommaire 1").PivotTables("pvtFonctionJournee") Set pf = pvt.PivotFields("Date") strDateSelected = dtpDate.Value Set pf = pvt.PivotFields("Date") Call GetFirstPivotFieldValueSelected(pf, strCurrentFV) pf.ClearAllFilters pf.PivotItems(strCurrentFV).Visible = False strDateSelected = Format(strDateSelected, "m\/d\/yyyy") pf.PivotItems(strDateSelected).Visible = True pvt.RefreshTable End Sub Private Sub GetFirstPivotFieldValueSelected(pf As PivotField, strFirstPFValueSelected As String) strFirstPFValueSelected = "" For Each Pi In pf.PivotItems If Pi.Visible = True Then strFirstPFValueSelected = Pi.Value Exit Sub End If Next End Sub 

它适用于这个简单的代码:

  Sub FilterDate() For Each pt In Worksheets("Sommaire 1").PivotTables With pt.PivotFields("Date") .ClearAllFilters .CurrentPage = dtpDate.Value End With Next pt End Sub