2017-04-12 17 views
1

次のコードがありますが、Set PT_Cache行がタイプの不一致エラーを発生しています。VBAエラーを使用してピボットテーブルを作成する

誰でも知っていますか?

Sub Create_Pivot_Table() 
Dim wsData As Worksheet, wsPT As Worksheet 
Dim PT_Cache As PivotCache 
Dim PT As PivotTable 
Dim LastRow As Long 

With ThisWorkbook 
Set wsData = .Worksheets("Data") 
Set wsPT = .Worksheets("Pivot Table") 
End With 

LastRow = wsData.Cells(Rows.Count, 1).End(xlUp).Row 

Set PT_Cache = ThisWorkbook.PivotCaches.Create(xlDatabase, wsData.Range("A1:O" & LastRow)) 

Set PT = PT_Cache.CreatePivotTable(wsPT.Range("D5"), "Pivot_Table_Test") 

Set PT = Nothing 
Set PT_Cache = Nothing 
Set wsData = Nothing 
Set wsPT = Nothing 
Exit Sub 

End Sub 
+0

'LastRow'の値は何ですか? LastRow = wsData.Cells(wsData.Rows.Count、1).End(xlUp).Row' –

+0

この部分を修正しましたが、これは問題ではなかったので、 "set PT_Cache"にはまだエラーがあります.... –

+0

あなたは私の答えを読んで、下のコードをテストしましたか? –

答えて

1

以下のコードを試してみてください、私は、PivotCacheセット1を試してみて、他のコメント(またはその逆)、(私はそれをテストしたときの両方が働いていたあなたのために働くどれ見るために2つのオプションを追加しました私ダミーデータ)

コード

Option Explicit 

Sub Create_Pivot_Table() 

Dim wsData As Worksheet, wsPT As Worksheet 
Dim PT_Cache As PivotCache 
Dim PT   As PivotTable 
Dim PRng  As Range 
Dim LastRow  As Long 

With ThisWorkbook 
    Set wsData = .Worksheets("Data") 
    Set wsPT = .Worksheets("Pivot Table") 
End With 

LastRow = wsData.Cells(wsData.Rows.Count, 1).End(xlUp).Row 
MsgBox LastRow ' <-- confirm value 

Set PRng = wsData.Range("A1:O" & LastRow) 

' option 1: Set the Pivot Cache 
Set PT_Cache = ThisWorkbook.PivotCaches.Create(xlDatabase, PRng) 

' option 2: Set the Pivot Cache 
Set PT_Cache = ThisWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=PRng.Address(True, True, xlR1C1, True)) 

' set the Pivot Table 
Set PT = wsPT.PivotTables.Add(PivotCache:=PT_Cache, TableDestination:=wsPT.Range("D5"), TableName:="Pivot_Table_Test") 

Set PT = Nothing 
Set PT_Cache = Nothing 
Set wsData = Nothing 
Set wsPT = Nothing 
Exit Sub 

End Sub 
関連する問題