【问题标题】:VBA: Run-time error '1004': Method 'PivotTables' of object '_Worksheet' failedVBA:运行时错误“1004”:对象“_Worksheet”的方法“数据透视表”失败
【发布时间】:2018-11-27 17:57:40
【问题描述】:

我正在尝试编写一个宏,用于在将新数据放入原始表时更新我的​​数据透视表。我不断收到错误,不知道如何解决。这是我到目前为止所拥有的。

Sub UpdatePivotTableRange() 
Dim Data_Sheet As Worksheet 
Dim Pivot_Sheet As Worksheet 
Dim StartPoint As Range 
Dim PivotName As String 
Dim NewRange As String 
Dim LastCol As Long 
Dim lastRow As Long 

Set Data_Sheet = ThisWorkbook.Worksheets("Data insert") 
Set Pivot_Sheet = ThisWorkbook.Worksheets("CC_Users") 

PivotName = PivotTable6 Data_Sheet.Activate 
Set StartPoint = Data_Sheet.Range("A1") 

LastCol = StartPoint.End(xlToRight).Column 
DownCell = StartPoint.End(xlDown).Row 

Set DataRange = Data_Sheet.Range(StartPoint, Cells(DownCell, LastCol)) 
NewRange = Data_Sheet.Name & "!" & DataRange.Address(ReferenceStyle:=xlR1C1) 

Pivot_Sheet.PivotTables (PivotName) 
ChangePivotCache.ActiveWorkbook PivotCaches.Create SourceType:=xlDatabase, SourceData:=NewRange Pivot_Sheet.PivotTables(PivotName).RefreshTable

Pivot_Sheet.Activate MsgBox "Your Pivot table is now updated" End Sub

谢谢

【问题讨论】:

  • 你只是想刷新一个枢轴吗?如果是这样,请使用RefreshAll
  • 不,我正在尝试让它自动化。将新数据放入表中时零触摸刷新。
  • 所以当表格随worksheet_change发生变化时调用命令
  • 您是将新条目粘贴到表格中(一次整行)还是逐个单元格地键入值?
  • 我将复制并粘贴到表格中。一次整行。

标签: vba excel pivot-table


【解决方案1】:

这需要粘贴在 VBE 中,该表格包含将要更改的表格。

照原样,当您的工作表上的 ANY 单元格发生更改时,这将刷新您工作簿上存在的 每个 数据透视表(以及数据透视图)。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Application.DisplayAlerts = False
Application.EnableEvents = False

ThisWorkbook.RefreshAll

Application.DisplayAlerts = True
Application.EnableEvents = True

Msgbox "All Pivots Refreshed"

End Sub

【讨论】:

  • 非常感谢。很抱歉,如果我对我写问题的方式感到困惑,这是我的第一篇文章,不知道如何正确表达。这有帮助。谢谢
  • 我还建议您访问tour 页面和How to Ask 问题页面
  • 我输入了你给我的代码。有没有办法让我每次按下数据表上的单元格时都不会显示消息框。我将查看“如何提问”页面以供将来参考。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多