为什么运行同一块VBA代码需要不同的时间?

我用两种不同的方式在Excel中运行同一块VBA代码。 1.原始的方式:点击一个调用子的命令button。 2.通过使用Application.Run调用另一个工作簿中macros的子。

我放了一个计时器来测量只需要运行子代码的时间。 第一种方法所用时间为319.36秒,而第二种方法所用时间仅为2.89秒。

这怎么解释?

下面是代码。 一般来说,当调用子工具时,在stsheet中更改一个活动工作表的值,然后在不同工作表之间复制和粘贴一些值。

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 

如果这是一个很长的时间,试着在macros运行的同时制作计算手册。 只要记得在最后恢复到自动(如果需要的话),像这样。

 Sub CopyPaste() time1 = Timer Application.ScreenUpdating = False Application.Calculation = xlCalculationManual *your code here* Application.ScreenUpdating = True Application.Calculation = xlCalculationAutomatic End Sub