Excel在运行宏之后崩溃,而不是在将图表格式复制到另一个图表时崩溃

时间:2018-01-30 02:47:16

标签: excel vba excel-vba charts

我写了一个宏,它复制一个图表对象的格式并将其粘贴到其他图表对象中。宏SUCCESSFULLY完成并且正确创建新制作的图表对象。它做到了它应该做的!但是,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文件并使用安全模式等,仍然崩溃。

我不想通过属性复制主图表属性来完成与这个简单格式贴纸相同的事情 - 除非有人有更好的想法,这将需要更多的额外代码!

我有事件查看器错误日志,如果这会消除任何光线。谢谢!

2 个答案:

答案 0 :(得分:0)

未经测试,就像在移动设备上一样。但我认为你不需要激活/选择复制粘贴。

以下代码切换事件和屏幕更新。

' 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

答案 1 :(得分:0)

哦,我通过搞乱更多的东西解决了这个问题!

由于某些原因,如果在粘贴图表格式之前指定错误栏,则Excel会崩溃。因此,在粘贴格式之前,我没有指定错误栏。这真的很奇怪。