我编写了一个宏,用于复制一个图表对象的格式并将其粘贴到其他图表对象中。宏成功完成,新创建的图表对象被正确创建。它做了它应该做的事情!但是,Excel在保存或处理新图表对象后立即崩溃。它在Excel 2010和Excel 2016中都会崩溃。
我已经隔离了导致Excel崩溃的代码片段。在下面的代码片段中,如果注释掉了第8-9行,Excel不会崩溃:
For Each cht In sh_plots.ChartObjects
With cht.Chart
'copies master chart format
master_plot.Chart.ChartArea.Copy
'applies formats
.ChartArea.Select
ActiveSheet.PasteSpecial Format:=2
Application.CutCopyMode = False因此,这两条线路(8-9)是出现故障的线路:
.ChartArea.Select
ActiveSheet.PasteSpecial Format:=2有人知道为什么这两行代码现在成为我生存的祸根吗?我已经多次测试了这两行代码,并且崩溃是可重现的。我的excel文件没有损坏,因为我试图将代码作为文本复制到新的Excel文件中,并使用安全模式等,但仍然崩溃。
我不想为了完成这个简单的格式粘贴程序而逐个复制主控图表的属性-除非有人有更好的想法,这将需要更多的额外代码!
我有事件查看器的错误日志,如果它可以提供任何线索。谢谢!
发布于 2018-01-30 14:14:33
未经测试,就像我在手机上一样。但是我不认为你需要激活/选择来复制-粘贴。
下面的代码切换事件和屏幕更新。
' Ensure you have Option Explicit and have declared cht as a ChartObject '
With application
.screenupdating = false
.enableevents = false
End with
'copies master chart format
master_plot.Chart.ChartArea.Copy
For Each cht In sh_plots.ChartObjects
'applies formats
Cht.chart.paste type:=xlformats
Next cht
'reset property outside of loop - once all done. '
Application.CutCopyMode = False
With application
.screenupdating = true
.enableevents = true
End with发布于 2018-01-30 23:23:40
哦,我通过摆弄更多的东西解决了这个问题!
由于某些原因,如果您在粘贴图表格式之前指定了错误条,Excel将崩溃。因此,直到我粘贴了格式之后,我才指定错误条。真的很奇怪它会这样做。
https://stackoverflow.com/questions/48513118
复制相似问题