VBA生成图表时偶发数据源错误问题求助
VBA生成图表时偶发数据源错误问题求助
我现在正在用VBA开发一个数据排序和报表生成工具,流程是按特定条件把排序后的数据放到「IP」工作表,再基于这些数据创建两个透视表,最后用透视表生成两张图表。
目前两个透视表和其中一张图表都能正常工作,但另一张图表偶尔会和第一张显示完全一样的数据——我根本没修改它的数据源啊!更离谱的是,同一个代码连续运行好几次,不加任何改动,有时候生成的图表是对的,有时候就出错了。我还截了错误和正确状态下的图表:
错误图表
正确图表
下面是我的代码,麻烦各位帮忙看看哪里出问题了:
Sub IPReport() Dim PTCache As PivotCache, PT As PivotTable, LRow As Integer, LCol As Integer, sum As Single Sheets("IP").Activate LRow = Range("A1048576").End(xlUp).Row LCol = Range("XFD1").End(xlToLeft).Column LRowP = Range("V1").End(xlDown).Row Set Size = Range(Cells(1, 1), Cells(LRow, 10)) Set PTCache = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=Size) On Error Resume Next ActiveSheet.ChartObjects.Delete On Error GoTo 0 'deleting graphs if they already exist If LRow >= 3 Then Dim wsWorksheet As Worksheet Set wsWorksheet = Worksheets("IP") On Error Resume Next wsWorksheet.PivotTables("Data").TableRange2.Clear wsWorksheet.PivotTables("1Shift").TableRange2.Clear 'statement that deletes pivot tables that already exsist Set PT = ActiveSheet.PivotTables.Add(PivotCache:=PTCache, TableDestination:=Range("L1"), TableName:="Data") Worksheets("IP").PivotTables(1).AddFields ColumnFields:=Array("Shift"), RowFields:=Array("Part Desc") ActiveSheet.PivotTables("Data").AddDataField ActiveSheet.PivotTables("Data").PivotFields("Total $"), "$ for part", xlSum With ActiveSheet.PivotTables("Data").PivotFields("$ for part") .NumberFormat = "$#,##0.00" End With '$ pivot table Set PT = ActiveSheet.PivotTables.Add(PivotCache:=PTCache, TableDestination:=Range("V1"), TableName:="1Shift") Worksheets("IP").PivotTables(1).AddFields ColumnFields:=Array("Shift"), RowFields:=Array("Part Desc") ActiveSheet.PivotTables("1Shift").AddDataField ActiveSheet.PivotTables("1Shift").PivotFields("Quantity"), "Part Quantities", xlSum 'Quantity pivot table Dim LRowd As Integer Dim QChart As ChartObject LRow = Range("V1").End(xlDown).Row LRowM = Range("L1").End(xlDown).Row Set QChart = Sheets("IP").ChartObjects.Add(Left:=682, Width:=600, Top:=700, Height:=400) QChart.Chart.SetSourceData Source:=Sheets("IP").Range(Cells(3, 22), Cells(LRow - 1, 25)) QChart.Chart.ChartType = xlColumnClustered QChart.Chart.SetElement (msoElementChartTitleAboveChart) QChart.Chart.ChartTitle.Text = "Total Amount of Defects" QChart.Chart.SetElement msoElementDataLabelShow 'creating column chart Else: MsgBox ("Insufficient data for report") End If End Sub
我怀疑是不是透视表的缓存或者生成顺序有问题?或者是我指定图表数据源的方式不对?毕竟有时候能正常运行,有时候不行,这种偶发的问题实在太头疼了。
备注:内容来源于stack exchange,提问作者AidanB17
相关产品推荐
相关产品推荐

