我在业余时间支持Excel VBA应用程序。我是制造工艺工程师,不是专业开发人员。
该应用程序的图表部分在Excel2007中可以正常工作。我的公司正在升级到Excel2010,该应用程序在与工作表上的图表交互时出现了问题。
这个问题是关于条形图的。应用程序在重置时,使用以下代码从图表中删除该系列。我这样做是为了在导入/处理新数据时,不会有不是最新数据的图表呈现给用户。
'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 = xlColumnClustered2010的问题是,有时当运行VBA代码时,整个条形图会“丢失”(删除),而不是没有任何定义的系列的图表出现。
当通过另一段自动创建一系列图表并将它们复制到PowerPoint的VBA代码段执行基本代码的连续执行时,似乎会出现“丢失”图表。
当手动执行图表序列时,它不会出现任何问题。当自动运行时,在生成第二个聊天序列时,图表将被删除。
我希望有人熟悉从Excel 2007到2010版本的图表变化,并将能够提供帮助。
谢谢,
镜头
发布于 2011-10-28 03:15:08
这可能有助于重写你的代码,这样你就不会激活/选择,然后依赖于“活动”对象没有改变:如果一些其他代码在你不期望的情况下激活了其他对象,这可能会中断……
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发布于 2011-11-10 00:38:59
我改进了与图表的所有交互,使用" with“而不是”selecting“。这是更好的编程。
不幸的是,这并没有解决问题。
关于打印假脱机程序的评论很有帮助,看起来这个问题与图表在屏幕和打印机上的显示方式有关。
Reference
由于我的组织中的许多其他用户都有不同的打印机,当尝试默认使用MS Office打印驱动程序时,无法改善restuls,因此必须找到另一种解决方案。
在使用VBA代码将工作表元素复制到PowerPoint时出现此问题。作为打印机进行复制,bitmat使用:
rSlideArea.CopyPicture (2) 更改为使用以下命令复制为屏幕位图:
rSlideArea.CopyPicture Appearance:=xlScreen, Format:=xlBitmap有趣的是,采用位图格式的PowerPoint文件更容易处理,而且更小。
其结果是,PowerPoint中的图片不像屏幕格式那样“漂亮”,但应用程序现在可以在Excel v2010中运行,这是当务之急。
感谢所有帮助我的人。
https://stackoverflow.com/questions/7920507
复制相似问题