数据透视表单元格更改

时间:2015-10-28 15:05:13

标签: excel vba excel-vba

尝试更改Dealing Date单元格。如果代码单独运行,则单元格会更新,但当作为脚本的一部分放置时,它似乎无法运行:

Sub ChngDate()

Dim pt As PivotTable
Set pt = Worksheets(1).PivotTables(1)

'pt.PivotFields("Dealing Date").ClearAllFilters

' if time is before 12
If Hour(Now) < 12 Then
    pt.PivotFields("Dealing Date").CurrentPage = Date
ElseIf Hour(Now) >= 12 Then
    pt.PivotFields("Dealing Date").CurrentPage = Date + 1
End If

End Sub

运行上述内容时,我得到:

  

运行时错误5,无效的过程或调用参数

数据透视表是工作簿中唯一一个位于工作表1中的数据透视表。

知道为什么吗?

1 个答案:

答案 0 :(得分:0)

您可以使用以下代码或其他日期模式替换您的代码,例如yyyy/MM/dd

pt.PivotFields("Dealing Date").CurrentPage = Format(Date, "dd/MM/yyyy")
pt.PivotFields("Dealing Date").CurrentPage = Format(Date + 1, "dd/MM/yyyy")

但是,无法帮助您选择正确的日期。因为这些行会修改当前显示值。

您可以尝试以下几行:

Sub ChngDate()

Dim pt As PivotTable
Set pt = Worksheets(1).PivotTables(1)

'pt.PivotFields("Dealing Date").ClearAllFilters

' if time is before 12
With pt.PivotFields("Dealing Date")
    If Hour(Now) < 12 Then
        'pt.PivotFields("Dealing Date").CurrentPage = Date
        .PivotItems(Format(Date, "dd/MM/yyyy")).Visible = True
    ElseIf Hour(Now) >= 12 Then
        'pt.PivotFields("Dealing Date").CurrentPage = Date + 1
        .PivotItems(Format(Date + 1, "dd/MM/yyyy")).Visible = True
    End If
End With

End Sub