每当有人刷新 table 时的日期戳
Date Stamp whenever someone refreshes the table
我的 Sheet1 中有一个枢轴 table 连接到外部源,它也是一个 excel sheet。我想要做的就是在有人刷新数据透视表 table 时获取日期和时间戳。
我收到错误消息对象不支持此 属性 或方法。
Private Sub Refresh_Click()
Dim PT As PivotTable
Dim WS As Worksheet
For Each WS In ThisWorkbook.Worksheets
For Each PT In WS.PivotTables
PT.RefreshTable
WS.Sheets("Month-to-Date").Range("P5") = TimeValue(Now)
Next PT
Next WS
End Sub
问题是 WS
是一个工作表,并且一个工作表不支持另一个工作表作为 属性。
Worksheets 是 Workbooks 的属性,所以
ThisWorkbook.Sheets("Month-to-Date").Range("P5") = TimeValue(Now)
解决了问题
在 Excel VBA 中有一个奇特的内置事件。在枢轴 table、select 的工作表中,事件 PivotTableUpdate
(Event Documentation):
至于工作表上可能会有超过 1 个枢轴 table,最好使用其名称检查哪一个是刷新的:
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
Select Case Target.Name
Case "PivotTable2"
Debug.Print "Write date somewhere "; Format(Now, "DD-MM-YYYY")
Case Else
Debug.Print "Not PivotTable2"
End Select
End Sub
"DateStamp"通过Format(Now, "DD-MM-YYYY")
得到,打印到立即window(Ctrl+G).可以选择将其写入服务器或单独的工作表,而不是在那里打印, 像这样:
Case "PivotTable2"
Worksheets(2).Cells(lastCell, 1) = Format(Now, "DD-MM-YYYY")
我的 Sheet1 中有一个枢轴 table 连接到外部源,它也是一个 excel sheet。我想要做的就是在有人刷新数据透视表 table 时获取日期和时间戳。
我收到错误消息对象不支持此 属性 或方法。
Private Sub Refresh_Click()
Dim PT As PivotTable
Dim WS As Worksheet
For Each WS In ThisWorkbook.Worksheets
For Each PT In WS.PivotTables
PT.RefreshTable
WS.Sheets("Month-to-Date").Range("P5") = TimeValue(Now)
Next PT
Next WS
End Sub
问题是 WS
是一个工作表,并且一个工作表不支持另一个工作表作为 属性。
Worksheets 是 Workbooks 的属性,所以
ThisWorkbook.Sheets("Month-to-Date").Range("P5") = TimeValue(Now)
解决了问题
在 Excel VBA 中有一个奇特的内置事件。在枢轴 table、select 的工作表中,事件 PivotTableUpdate
(Event Documentation):
至于工作表上可能会有超过 1 个枢轴 table,最好使用其名称检查哪一个是刷新的:
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
Select Case Target.Name
Case "PivotTable2"
Debug.Print "Write date somewhere "; Format(Now, "DD-MM-YYYY")
Case Else
Debug.Print "Not PivotTable2"
End Select
End Sub
"DateStamp"通过Format(Now, "DD-MM-YYYY")
得到,打印到立即window(Ctrl+G).可以选择将其写入服务器或单独的工作表,而不是在那里打印,
Case "PivotTable2"
Worksheets(2).Cells(lastCell, 1) = Format(Now, "DD-MM-YYYY")