簡體   English   中英

excel vba復制粘貼單元格而無需用戶注意

[英]excel vba copy paste cells without user noticing

我有一個宏,可以在不同的工作表中復制並粘貼很多單元格。 這很好,我的問題是:

是否可以使整個宏在后台運行?

由於宏將由經驗不足的excel用戶使用,因此我不希望他們看到宏跳來跳去並復制大量數據,這會使屏幕發瘋。

預先感謝您的回答!

在宏的開頭使用application.screenupdating = false

然后最后是Application.Screenupdating = true ,並且屏幕不會跳來跳去。

還值得添加Msgbox("The macro has finished!")或類似的結尾,以便他們知道它已經完成了工作。

我猜你的“宏”看起來像這樣。

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

了解有關如何避免在Excel VBA中使用“選擇”的更多信息

您可以使用以下工具來實現自己的目標:

  • Application.ScreenUpdating = False '關閉屏幕更新

這將隱藏所有屏幕更新,直到您再次將其打開。 如果您的應用程序帶有各種.Activate等,則可能需要保存初始選擇點

  • 各種事件觸發子

要在“后台”啟動某件事,您可以啟動它

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM