Excel工作表

我有2个工作表,ws1和ws2。 这是vba。 它会去ws2然后ws1。 我只想看到ws1,而ws2做复印工作,我不想在ws1和ws2之间玩耍。

我应该如何纠正vba?

Sheets("ws2").Select Range("A3:AA3").Select Selection.Copy Range("A4").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range("A4").Select Application.CutCopyMode = False Range("A4:AA4").Select Selection.Insert Shift:=xlDown Sheets("ws1").Select 

杂耍正在发生,因为告诉excel做杂耍:)因此,我总是build议不要使用.SELECT/.ACTIVATE

直接执行操作。 看到这个

 Sub Sample() Dim ws As Worksheet Set ws = Sheets("ws2") With ws .Range("A3:AA3").Copy .Range("A4").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False .Range("A4:AA4").Insert Shift:=xlDown End With End Sub 

使用

  Application.ScreenUpdating = False 

在运行上面的代码停止查看你的macros在做什么之前。

所以:

 Sheets("ws1").Select Application.ScreenUpdating = False Range("A3:AA3").Select .... etc Application.ScreenUpdating = True 

ozgrid上的论坛条目提供了一个简单而优雅的解决scheme

 Sub NameOfSub() Application.ScreenUpdating = False 'Some Code Here Application.ScreenUpdating = True End Sub