加速图表显示

时间:2015-11-08 02:22:04

标签: excel-vba charts excel-2010 vba excel

我有50多个折线图,每个图表有12个数据系列。每个系列都有2000个数据点。在打开工作簿后,通过设置ActiveSheet.ChartObjects(chart_name).Visible = True显示图表,每个图表最初需要2秒以上。仔细阅读所有图表(一步一步)进行快速审核,感觉就像是永远在进行。

我正在寻找可以加快显示过程的任何高级技巧或技巧。

我在主题中找到的只是下面的链接,但我不知道它说的是什么。

https://social.msdn.microsoft.com/Forums/office/en-US/b7c63f9d-e373-4455-a793-f58707353032/excel-2010-extemely-slow-chart-rendering-vs-2003?forum=exceldev

搜索"部分解决"找到关于他们部分解决方案的确切帖子。

1 个答案:

答案 0 :(得分:0)

好吧,我想出了节省时间的方法。我希望我不是只写白板。如果你真的在读这篇文章,请给我一些反馈。

据我所知,每当excel呈现图表时,它都会进入内存,当它再次设置为可见时(隐藏后),该过程速度提高了10倍。在我的情况下,图表的第一次渲染是2.7秒长,但第二次只需0.3秒。当你习惯了快速的工作流程时,2秒以上的感觉就像地狱一样。

不知何故,解决方案正在开始(设置可见)开头的所有图表,以将它们加载到内存中。这比使用测量的2.7s乘以图表的数量要快得多。 50个图表在28s而不是135s中加载。闪烁的图表可能令人沮丧,但是只有一个简单的白色形状作为临时封面也可以解决。

该计划:

ActiveSheet.Shapes("COVER").Visible = True
ActiveSheet.Shapes("COVER").TextFrame.Characters.Text = "Loading charts (0/50)"

For counter = 1 To 50

    chart_name = Sheets("Data").Cells(counter , 1)
    ActiveSheet.ChartObjects(chart_name).Visible = True
    DoEvents
    ActiveSheet.ChartObjects(chart_name).Visible = False
    ActiveSheet.Shapes("COVER").TextFrame.Characters.Text = "Loading charts (" & counter & "/50)"

Next counter

ActiveSheet.Shapes("COVER").Visible = False

成功,是的。