Excel VBA-数据透视表的更改日期筛选器

Excel VBA-数据透视表的更改日期筛选器,excel,vba,date,Excel,Vba,Date,我的工作表上有一个数据透视表,我正在尝试添加一个日期筛选器: Private Sub foo() Dim MyDate MyDate = #1/27/1993# Worksheets("Timeline").PivotTables("PivotTable7").PivotFields("EndDateFormatted").PivotFilters.Add Type:=xlBetween, Value1:=MyDate, Value2:=MyDate End Sub 这会导致“无效过程调用

我的工作表上有一个数据透视表,我正在尝试添加一个日期筛选器:

Private Sub foo()

Dim MyDate
MyDate = #1/27/1993#
Worksheets("Timeline").PivotTables("PivotTable7").PivotFields("EndDateFormatted").PivotFilters.Add Type:=xlBetween, Value1:=MyDate, Value2:=MyDate

End Sub
这会导致“无效过程调用或参数”错误。我做错了什么

更新: thx luke_t,现在我知道我必须使用xlDateBetween。 现在,我的代码如下所示:

Private Sub foo()
    Dim d As Date
    Dim dd As Date

    d = DateSerial(2016, 1, 1)
    dd = DateSerial(2016, 1, 2)
    Worksheets("Timeline").PivotTables("PivotTable7").PivotFields("EndDateFormatted").PivotFilters.Add Type:=xlDateBetween, Value1:=d, Value2:=dd
End Sub

现在它显示“您输入的日期无效”(1004)

您需要将
xlDateBetween
传递到
PivotFilters.Add
方法的
Type:=
参数中

可以传递到类型参数中的常量名称

使用带有
类型:=
参数的字符串。见下文

Private Sub foo()
    Dim d As String

    d = "01/01/2016"
    Worksheets("Timeline").PivotTables("PivotTable7").PivotFields("EndDateFormatted").PivotFilters.Add Type:=xlDateBetween, Value1:=d, Value2:=d
End Sub

您需要将
xlDateBetween
传递到
PivotFilters.Add
方法的
Type:=
参数中

可以传递到类型参数中的常量名称

使用带有
类型:=
参数的字符串。见下文

Private Sub foo()
    Dim d As String

    d = "01/01/2016"
    Worksheets("Timeline").PivotTables("PivotTable7").PivotFields("EndDateFormatted").PivotFilters.Add Type:=xlDateBetween, Value1:=d, Value2:=d
End Sub

事实上,这肯定是问题的原因之一。但现在我有一个错误1004(无效日期)。我已经用新代码更新了我的问题。@ThomasMX-我认为您应该将此标记为已回答,因为它修复了基于“无效过程调用或参数”错误的原始问题。。日期问题几乎是一个单独的问题——特别是因为你更改了原始代码。在我的另一个问题中,我问了1004的原因,得到了“重复”。所以我必须去掉绿色的记号@ThomasMX将日期变量设置为字符串:
Dim MyDate as string
,然后
MyDate=“27/01/1993”
。请确保使用与本地设置/数据相关的正确日期格式。好吧,关于原始问题(这一个),我们仍然没有找到100%正确的代码,因此我认为最好是将这一个打开,另一个关闭。我稍后会检查您的建议,并尽快给您反馈。事实上,这一定是问题的原因之一。但现在我有一个错误1004(无效日期)。我已经用新代码更新了我的问题。@ThomasMX-我认为您应该将此标记为已回答,因为它修复了基于“无效过程调用或参数”错误的原始问题。。日期问题几乎是一个单独的问题——特别是因为你更改了原始代码。在我的另一个问题中,我问了1004的原因,得到了“重复”。所以我必须去掉绿色的记号@ThomasMX将日期变量设置为字符串:
Dim MyDate as string
,然后
MyDate=“27/01/1993”
。请确保使用与本地设置/数据相关的正确日期格式。好吧,关于原始问题(这一个),我们仍然没有找到100%正确的代码,因此我认为最好是将这一个打开,另一个关闭。我稍后会检查你的建议,并尽快给你反馈。