1
VBAを使用してExcelでピボットを作成しようとしていますが、このコードが機能していない理由を理解できません。何のエラーも発生していません。ピボットテーブルが作成されていないだけです。私はこの全く同じコードを他のプログラムで問題なく使用しました(明らかにローカル変数を置き換えます)。私はすでにソースデータが正しく定義されていることを確認しました。私の唯一の唯一のリードは、ピボットキャッシュの作成を実行した後、PvtCache = Nothingであることを示しています。PivotCacheが正しく動作するようにする方法は?
Option Explicit
Sub Create_Report()
Dim sht_Break_Data As Worksheet
Dim sht_Num_Breaks_Pvt As Worksheet
Dim tab_name As String
Dim lrow_Src As Long
Dim lcol_Src As Long
Dim rng_Pvt_Source As Range
Dim PvtStart As Range
Dim PvtCache As PivotCache
Dim Pvt As PivotTable
Dim PvtField As PivotField
Dim PvtName As String
Set_Global_Variables
'Get last row and column of Source Data Tab
With sht_Source_Data
lrow_Src = .Cells(Cells.Rows.Count, 1).End(xlUp).Row
lcol_Src = .Cells(1, Cells.Columns.Count).End(xlToLeft).Column
'Set source data range for pivots
Set rng_Pvt_Source = .Range(.Cells(1, 1), .Cells(lrow_Src, lcol_Src))
End With
'=======================================Create Pivot for Number of Breaks==========================================='
'Create sheet for Number of Breaks Pivot
'If the given tab name already exists, contents are deleted. If not, it is created
With ThisWorkbook
tab_name = "Num of Breaks Pivot"
If SheetExists(tab_name, ThisWorkbook) = True Then
Set sht_Num_Breaks_Pvt = .Sheets(tab_name)
On Error Resume Next
sht_Num_Breaks_Pvt.ShowAllData 'clear any active filter
sht_Num_Breaks_Pvt.Cells.Delete 'delete content
Else
.Sheets.Add(After:=.Sheets(.Sheets.Count)).Name = tab_name 'add new tab to the end
Set sht_Num_Breaks_Pvt = .Sheets(tab_name)
End If
'Define pivot start location
Set PvtStart = sht_Num_Breaks_Pvt.Cells(2, 1)
'Create Pivot Cache from Source Data
Set PvtCache = .PivotCaches.Create(_
SourceType:=xlDatabase, _
SourceData:=rng_Pvt_Source)
'Create Pivot table from Pivot cache
Set Pvt = PvtCache.CreatePivotTable(_
TableDestination:=PvtStart, _
TableName:="test")
End With
End Sub
ちょうど勘違い:F8を使用してコードを1行ずつステップし、sht_Num_Breaks_Pvtがあなたが思うシートに設定されていることを確認します。 – jeffreyweir
既にシートの名前を印刷してチェックされていますが、それは正しいです。 – kschindl
よろしいですか?これをルーチンの最後に追加して、何が起きたかについて返信することはできますか? msgbox pvt.parent.name& ""&pvt.name – jeffreyweir