【发布时间】:2017-06-07 02:41:59
【问题描述】:
您好,我正在编写 VBA 代码以根据源数据中的最后一行设置范围,然后在该范围上创建数据透视表。但是,当我运行错误 1004(应用程序定义的错误)的代码时,这里的最后一行出错了。我觉得所有的变量都已经定义好了,应该没问题。消息框还为我提供了源数据中正确的最后一行编号。你能帮我解决吗?谢谢。
Dim PvtTbl As pivotTable
Dim wsData As Worksheet
Dim rngData As Range
Dim PvtTblCache As PivotCache
Dim wsPvtTbl As Worksheet
Dim pvtFld As PivotField
Set wsData = Worksheets("Task List Data Export")
Set wsPvtTbl = Worksheets("Summary")
wsPvtTbl.Cells.Clear
wsPvtTbl.Cells.ColumnWidth = 10
For Each PvtTbl In wsPvtTbl.PivotTables
If MsgBox("Delete existing PivotTable!", vbYesNo) = vbYes Then
PvtTbl.TableRange2.Clear
End If
Next PvtTbl
Dim last As Long
With Worksheets("Task List Data Export")
last = .Cells(.Rows.Count, "A").End(xlUp).Row
End With
MsgBox last
Set rngData = Worksheets("Task List Data Export").Range(Cells(1, 1), Cells(last, 15))
************************更新********************** ** 嗨,我应用了 Dy.Lee 的代码,这个错误终于消失了。但是我的下一行又出错了(错误类型不匹配)
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=rngData, Version:=xlPivotTableVersion12).CreatePivotTable TableDestination:=wsPvtTbl.Range("B25"), TableName:="PivotTable1", DefaultVersion:=xlPivotTableVersion12
有什么想法吗?再次感谢
【问题讨论】:
-
************************更新********************** ********
-
始终限定
Cells等以指定它所指的工作表 - 最后一行实际上是Set rngData = Worksheets("Task List Data Export").Range(ActiveSheet.Cells(1, 1), ActiveSheet.Cells(last, 15))并且您无法在一个工作表上的不同单元格之间找到范围工作表。 -
@YowE3K 您好,非常感谢您的提示。这对于消除我的困惑非常有用:)