2017-06-07 62 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

相關問題