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

如果单击macros,我有一个macros的表“索引”我想创build一个新工作表,并从另一个工作表(称为“模板”)复制一个部分。

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

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)是否有办法避免新build表单被显示;

b)如果a)的答案是否定的,有没有办法显示一个对话框,持续几分之一秒,比如“Elaborating …”隐藏了背景中发生的事情?

您可以将ScreenUpdating属性设置为TrueFalse以满足您在Sub的开始处的需要:

 Application.ScreenUpdating = False 

而这最后:

 Application.ScreenUpdating = True 

在这里看到更多的信息。

使用

 Application.ScreenUpdating = False 

在你做副本之前的某个地方

完全同意,你可以使用ScreenUpdating属性为True或False,就像大家已经提到的那样。 但是你需要小心。 如果在screenupdating设置为false的情况下进行debugging或者应用程序出错,那么它会导致excel文件“冻结” – 但不完全是屏幕。 正如它所提到的,屏幕不会更新,直到您再次调用它为止。

所以,我build议在开发的时候不要这么做。 每次程序冻结时,在代码中手动启用它会非常烦人。