Excel工作表

时间:2012-07-26 14:06:42

标签: excel excel-vba vba

我有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

3 个答案:

答案 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