我有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
答案 0 :(得分:2)
杂耍正在发生,因为你告诉excel做杂耍:)因此我总是建议不要使用.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
答案 1 :(得分:0)
使用
Application.ScreenUpdating = False
在运行上面的代码之前停止查看宏正在做什么。
这样:
Sheets("ws1").Select
Application.ScreenUpdating = False
Range("A3:AA3").Select
.... etc
Application.ScreenUpdating = True
答案 2 :(得分:0)
在ozgrid上的forum entry提供了一个简单而优雅的解决方案
Sub NameOfSub()
Application.ScreenUpdating = False
'Some Code Here
Application.ScreenUpdating = True
End Sub