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. 了解更多信息。
我有一个宏,可以在不同的工作表中复制和粘贴大量单元格。这很好用,我的问题是:
是否可以在后台制作整个宏运行?
由于没有经验的 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. 了解更多信息。