我以两种不同的方式在Excel中运行相同的VBA代码。 1.原始方式:单击调用sub的命令按钮。 2.使用Application.Run从另一个工作簿中的宏调用sub。
我放了一个计时器来测量只运行sub中代码所需的时间。对于第一种方式,所花费的时间是319.36秒,而对于第二种方式,所花费的时间仅为2.89秒。
如何解释?
以下是代码。通常,它所做的是更改stsheet中的值,该值是调用sub时的活动工作表,然后在不同工作表之间复制并粘贴一些值。
Sub CopyPaste()
time1 = Timer
Application.ScreenUpdating = False
stsheet = ActiveSheet.Name
Sheets("A1").Select
Range("F6:AA25").ClearContents
Sheets("A2").Select
Range("F6:S25").ClearContents
For I = 1 To 20
Sheets(stsheet).Select
Range("A20").Value = I
Sheets("B").Select
Range("u26:v30").Select
Selection.Copy
Range("d26").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Sheets(stsheet).Select
If Range("m34").Value = 0 Then
Exit For
End If
For J = 1 To 22
Sheets(stsheet).Select
Range("A22").Value = J
Range("y47").Value = Range("E101")
Range("Y47").Select
Selection.Copy
Sheets("M1").Select
Range("F6").Offset((I - 1), J - 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Next J
For K = 1 To 14
Sheets(stsheet).Select
Range("t52").Value = K
Range("y48").Value = Range("E201")
Range("y48").Select
Selection.Copy
Sheets("M2").Select
Range("F6").Offset((I - 1), K - 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Next K
Next I
Application.CutCopyMode = False
Application.ScreenUpdating = True
MsgBox Timer - time1
End Sub
答案 0 :(得分:0)
如果需要多长时间,请在宏运行时尝试制作计算手册。请记住在最后恢复自动(如果需要),就像这样。
library(dplyr)
read.csv("test.csv", colClasses="character") %>% mutate_each(funs(as.numeric))