防止Excel激活新对象(表格,图表,工作簿)

好的,我有一个处理大量数据并制作大量图表的excelmacros。 我inheritance了一个最近退休的人的代码,而代码function非常低效,所以我正在重写它。 我试图解决的一件事是他激活/select了一切。 我更喜欢使用引用,并从不select/激活任何东西。

但是我遇到了一个问题,那就是当我创build一个新的工作簿或者图表时,它会从原来的工作簿中偷取焦点。 这很烦人,因为我通常不会在我的主工作簿的引用中添加工作簿对象。

例如,当我使用这些行时,新的图表/工作簿将变为活动状态

Set wb = Workbooks.AddSet wC = wb.Charts.Add

然后,我使用Workbooks(FileName).Activate重新激活原始工作簿

我觉得每次都要这样做是令人讨厌的,并且想知道是否有办法阻止新的对象变得活跃。

编辑:我只是意识到,其他行动导致图表窃取焦点,就像用这个命令移动图表wC.Move After:=wb.Worksheets(wb.Worksheets.Count)

如果你在一个新的工作表之后声明一个旧的工作表,我相信这会完成你想要的。 例如,

 Dim newWst As Worksheet Dim oldWsk As Worksheet Set newWst = Worksheets.Add Set oldWst = Worksheets("Sheet1") Cells(1, 1) = "Test" 

为我工作。 它将“testing”添加到旧的工作表中。