运行VBA代码并保持Excels UNDO / REDO完整?

我运行这个代码强制更新几个图表:

'Force update charts For Each cht In Sheets("Charts").ChartObjects cht.Chart.SeriesCollection.Add Source:=Worksheets("Builder").Range("AI2:AI7") cht.Chart.SeriesCollection(cht.Chart.SeriesCollection.Count).Delete Next cht 

我从来不想从Excel快速访问栏中撤消或重做以下几行。 不幸的是,上面的行清楚Excels撤消/重做列表,我不能再撤消/重做更改。

是否有可能使Excels撤消/重做忽略运行的VBA代码,而不是被清除?

是否有可能使Excels撤销/重做忽略VBA代码

没有

…而不是被清除?

无论您在Excel电子表格中执行的任何操作都存储在名为“撤消列表”的列表中。 因此,当您第一次执行“撤消”时,Excel引用此列表,然后解除您执行的最后一个操作。

例如,下面会给你最后一次执行的操作。

 Debug.Print Application.CommandBars("Standard").Controls("&Undo").List(1) 

您可能想要查看此链接创build一个撤消处理程序撤消由Excel VBA由Jan Karel Pieterse 完成的更改 。