2017-06-07 18 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'などを参照しているシートを指定するために常に' 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分以内に1つの質問のみを提出できます。 – AmadeusNing

関連する問題