2017-06-07 64 views
0

您好我正在处理我的VBA代码,以基于源数据中的最后一行设置范围,然后在该范围上创建数据透视表。但是,当我运行带有错误1004(应用程序定义的错误)的代码时,这里的最后一行出错了。我觉得所有的变数都已被定义,应该没问题。该消息框还为我提供源数据中最后一行的右侧数字。你能帮我解决吗?谢谢。当设置一个范围时发生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 

任何想法?再次感谢

+0

************************更新******* ****************** – AmadeusNing

+1

总是要限定'Cells'等,以指定它所指的是哪一个表格 - 最后一行实际上是'Set rngData = Worksheets(“Task List数据导出“)。范围(ActiveSheet.Cells(1,1),ActiveSheet.Cells(last,15))',并且您不能在一个工作表上的不同工作表上的单元格之间找到范围。 – YowE3K

+0

@ YowE3K嗨非常感谢您的提示。这对清除我的困惑非常有用:) – AmadeusNing

回答

1

代码会是这样

With Worksheets("Task List Data Export") 
    Set rngData = .Range(.Cells(1, 1), .Cells(last, 15)) 
End With 
+0

谢谢。这是固定的。但是,当我转到用于生成数据透视表的下一行(上面已更新)时,会出现错误(类型不匹配)。你有什么想法?谢谢。 – AmadeusNing

+0

@AmadeusNing - 在别人成功回答问题后,请不要改变问题。如果你有新问题,你应该提出一个新问题。 – YowE3K

+0

@ YowE3K嗨,谢谢你的建议。不过,我只能在90分钟内提出一个问题。 – AmadeusNing

相关问题