我在业余时间支持 Excel VBA 应用程序。我是制造工艺工程师,不是专业开发人员。
该应用程序的图表部分在 Excel 2007 中没有问题。我的公司正在升级到 Excel 2010,该应用程序现在与工作表上的图表交互存在问题。
这个问题与条形图有关。应用程序在重置时使用以下代码从图表中删除系列。我这样做是为了在导入/处理新数据时,没有时间向用户显示不是最新数据的图表。
'select the histogram chart
Sheets(sChartSheet).Select
ActiveSheet.ChartObjects("Chart 15").Activate
Call PBarCaption("Delete Existing Histogram Series")
'remove any existing series
For i = 1 To ActiveChart.SeriesCollection.Count
ActiveChart.SeriesCollection(1).Delete
Next i
然后创建新系列,因为要绘制的新数据是从外部数据文件导入的:
'add series for histogram
ActiveChart.SeriesCollection.NewSeries
ActiveChart.SeriesCollection(1).Values = "=HistogramData!$B$5:$B$29"
ActiveChart.SeriesCollection(1).XValues = "=HistogramData!$A$5:$A$29"
ActiveChart.SeriesCollection(1).charttype = xlColumnClustered
2010 年的问题是,有时运行 VBA 代码时,整个条形图会“丢失”(删除),而不是显示没有任何定义系列的图表。
当基本代码的连续执行是通过 VBA 代码的另一部分自动创建一系列图表并将它们复制到 PowerPoint 时,似乎会发生“丢失”图表。
手动执行图表序列时,它可以正常工作。自动运行时,在生成第二个聊天序列时,图表正在被删除。
我希望有人熟悉从 Excel 2007 到 2010 版本的图表变化并且能够提供帮助。
谢谢,
连
最佳答案
重新编写代码可能会有所帮助,这样您就不会激活/选择,然后取决于“事件”对象不会改变:如果其他代码在您不期望的情况下激活了其他对象,则可能会中断...
Dim cht As Chart
Set cht = ActiveWorkbook.Sheets(sChartSheet).ChartObjects("Chart 15").Chart
Do While cht.SeriesCollection.Count > 0
cht.SeriesCollection(1).Delete
Loop
With cht.SeriesCollection
.NewSeries
With .Item(1)
.Values = "=HistogramData!$B$5:$B$29"
.XValues = "=HistogramData!$A$5:$A$29"
.ChartType = xlColumnClustered
End With
End With
关于Excel 2010 VBA 删除图表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7920507/