问题描述
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