【问题标题】:VBA: Error on creating a pivot tableVBA:创建数据透视表时出错
【发布时间】:2016-02-17 15:36:47
【问题描述】:

我正在创建一个 VBA 宏。除此之外,它还制作了一个数据透视表:

    ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=Sheets("Working").UsedRange).CreatePivotTable TableDestination:="", TableName:="HDPivotTable", DefaultVersion:=xlPivotTableVersion10

这可行,但是当我从 Excel 电子表格中删除所有数据并将其替换为相同结构的新数据时,我在上面的行中收到错误:

运行时错误“13”:类型不匹配

您能帮我解决这个问题吗?

谢谢。

已编辑:

应用 Scott 的建议后,我得到另一个错误:

With Worksheets("Working")
    lRow = .Range("A" & .Rows.Count).End(xlUp).Row
    lColumn = .Range("A" & .Columns.Count).End(xlToLeft).Column
    ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=.Range(.Cells(1, 1), .Cells(lRow, lColumn))).CreatePivotTable TableDestination:="", TableName:="HDPivotTable", DefaultVersion:=xlPivotTableVersion10
End With

ActiveSheet.Name = "HD Pivot"
ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(1, 1)
ActiveSheet.PivotTables("HDPivotTable").AddFields RowFields:="Location Code"

错误是: 运行时错误“1004”:数据透视表类的 AddFields 方法失败

【问题讨论】:

  • 如果每次运行代码时都使TableName随机/唯一会怎样?
  • @KazimierzJawor 你看,我可以根据需要多次运行代码而不会出现问题。当我替换数据时,问题就开始了......
  • 我在这里找到了解决方案:stackoverflow.com/questions/25870193/…

标签: vba excel


【解决方案1】:

最有可能导致错误的原因是使用了UsedRange。虽然是一个漂亮的工具,但它也有其缺点,尤其是当您现在要替换数据时。

例如,如果新数据的列数比旧数据少,甚至行数更少,UsedRange 很可能会反映旧数据范围。此外,根据您对工作表所做的操作,可能存在包含格式或其他您无法用肉眼看到的字符的单元格,这将影响UsedRange

如果您在代码中进行以下调整,它应该每次都能正常工作。

Dim ws as Worksheet
Set ws = Worksheets("Working")

Dim lRow as Long, lColumn as Long

'assumes data table of contiguous rows/columns starting in A1
With ws
    lRow = .Range("A" & .Rows.Count).End(xlup).Row
    lColumn = .Cells(1, .Columns.Count).End(xltoLeft).Column
End With

ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=ws.Range(ws.Cells(1,1),ws.Cells(lRow,lColumn)) ...

【讨论】:

  • 谢谢,斯科特。请参阅我对原始问题的补充。
  • @DavidShochet - 如果此答案正确解决了您最初的问题,请将其标记为已回答并为您的新问题创建一个新问题(原始问题中没有)。
  • @DavidShochet - 您可以通过单击答案左侧的绿色复选标记标记为已回答。
  • 我认为这是我最初的问题的一部分,因为在我更改数据之前,一切正常。但是,如果您认为(或知道)这是一个全新的问题,我可以添加一个新问题。请告诉我。
  • 不管怎样,我在这里添加了一个新问题:stackoverflow.com/questions/35466984/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多