excel vba 在用户不注意的情况下复制粘贴单元格

excel vba copy paste cells without user noticing

我有一个宏,可以在不同的工作表中复制和粘贴大量单元格。这很好用,我的问题是:

是否可以在后台制作整个宏运行?

由于没有经验的 excel 用户会使用该宏,我不希望他们看到宏跳来跳去并复制大量数据,从而使屏幕变得疯狂。

提前感谢您的回答!

在宏的开头使用application.screenupdating = false

然后Application.Screenupdating = true结束,画面就不会跳了

还值得在末尾添加 Msgbox("The macro has finished!") 或类似内容,以便他们知道它已经完成了它的工作。

您手头有以下工具来实现您的目标:

  • Application.ScreenUpdating = False '关闭屏幕更新

这将隐藏所有屏幕更新,直到您再次打开它。如果您的应用程序使用各种 .Activate 等来回跳跃,您可能需要在

之前保存初始选择点
  • 各种事件触发子

要开始某事 "in the background" 你可以发起它

Workbook.Open
Workbook.SheetActivate, Workbook.SheetDeactivate
Worksheet.Activate, Worksheet.Deactivate
' etc.

我猜你的 'macro' 看起来像这样。

Sub Macro1()
    Sheets("Sheet1").Select
    ActiveWindow.SmallScroll Down:=4
    Range("J16").Select
    Selection.Copy
    Sheets("Sheet2").Select
    ActiveWindow.SmallScroll Down:=5
    ActiveWindow.SmallScroll ToRight:=2
    Range("I19").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Sheets("Sheet1").Select
    ActiveWindow.SmallScroll Down:=-72
    Range("A1").Select
End Sub

这样写就更好了

Option Explicit

Sub Macro1()
    With Worksheets("Sheet2")
        .Range("I19") = Worksheets("sheet1").Range("J16").Value
    End With
End Sub

通过 How to avoid using Select in Excel VBA. 了解更多信息。