VBA:复制表而不显示它几分之一秒

时间:2017-05-23 16:03:29

标签: excel vba excel-vba

我在表格上有一个宏"索引"如果单击宏我想创建一个新工作表并从中复制另一个工作表中的一部分(称为"模板")。

我有以下代码来完成这项工作:

Set new_sheet = Sheets.Add(after:=Sheets(Sheets.Count))
Sheets("Template").Range("A1:Z100").Copy
Destination:=Sheets(new_sheet.Name).Range("A1")
ActiveWindow.DisplayGridlines = False
Sheets("Index").Activate

然而,我不喜欢这一点,新片材会在几分之一秒内显示出来(我觉得它有点令人不安,就像潜意识消息一样)。我想留在"索引"片。因此,

a)有没有办法避免显示新创建的工作表;

b)如果a)的答案是否定的,是否有办法显示一个持续一秒钟的对话框,如#34; Elaborating ..."隐藏了背景中发生的事情?

3 个答案:

答案 0 :(得分:2)

使用

Application.ScreenUpdating = False

在你复制之前的某个地方

答案 1 :(得分:2)

您可以将ScreenUpdating属性设置为TrueFalse以满足您的需求,在您的Sub开头:

Application.ScreenUpdating = False

最后这个:

Application.ScreenUpdating = True

有关详细信息,请参阅here

答案 2 :(得分:2)

完全同意,您可以使用将ScreenUpdating属性设置为True或False,正如大家已经提到的那样。但你需要谨慎。如果您在screenupdating设置为false时调试或应用程序错误,那么它将导致excel文件"冻结" - 但不完全,只是屏幕。正如它所提到的,屏幕不会更新,直到你再次称它为真。

所以,我建议在开发时不要这样做。每次程序冻结时,来回移动以在代码中手动启用它会非常烦人。