我有这段代码完全符合我的要求,但速度很慢如果可能的话,希望能得到指点以帮助加快速度

问题描述

Sub copyInsertRow()

ActiveCell.Offset(1,0).EntireRow.Insert
ActiveCell.EntireRow.copy ActiveCell.Offset(1,0).EntireRow
ActiveCell.Offset(1,0).EntireRow.Font.Bold = False
Cells(ActiveCell.Offset(1,0).Row,6).ClearContents
Cells(ActiveCell.Offset(1,4).ClearContents
Cells(ActiveCell.Offset(1,2).ClearContents
Cells(ActiveCell.Offset(1,3).HorizontalAlignment = xlRight

End Sub

这个宏是插入一个新行,然后复制并清除我正在构建的产品定价电子表格的一些数据。它完全按预期工作,但速度非常慢。我对 Excel VBA 还很陌生,如果可能的话,希望有一些大师的指点来帮助我加快速度?感谢您的帮助!

解决方法

我有点惊讶代码很慢,当然除非你有一个非常大的表要插入行。不过,也许这会有所帮助。

您想摆脱所有需要重新评估的重复代码。

Sub CopyInsertRow()

 Application.ScreenUpdating = False  '*** Turn off screen updating for speed.
 ActiveCell.End(xlToLeft).Select '*** Insure you're in Col A
 
 With ActiveCell
    .Offset(1,0).EntireRow.Insert
    .EntireRow.Copy .Offset(1,0).EntireRow
    .Offset(1,0).EntireRow.Font.Bold = False
    .Offset(1,5).ClearContents
    .Offset(1,3).ClearContents
    .Offset(1,1).ClearContents
    .Offset(1,2).HorizontalAlignment = xlRight
 End With
 
End Sub

注意:要使偏移量与此代码一起使用,您必须从已知列开始,因此第二条语句可以让您进入当前行的 A 列。

HTH