减lessVBA中的加载或处理时间
我有这个小的代码,如果这个单元格有一个空的相邻单元格,它就会把这个单元格粘贴到另一个单元格中。 但是每次运行这个代码时,通常需要一分多钟才能完成整个列。 这是我的小代码。
Sub MoveCell() Dim A As Range For Each A In Range("B10:B1000") If A <> "" Then If A.Offset(0,2) = "" Then A.Cut A.Offset(0,4) End If End If Next End Sub
有没有解决这个代码的方法?
在循环和Application.ScreenUpdating = True
之前设置Application.ScreenUpdating = False
循环应该停止屏幕闪烁并且可能稍微改善时间。
一些优化build议:
你真的需要一路走到1000排? 现在,您每次调用此代码时都会处理990行。 最好的只有在你的应用程序需要的时候才可以。
相对于简单地将单元格设置为一个值,剪切和粘贴相当昂贵。 请改用以下内容:
If A.Offset(0,2) = "" Then A.Offset(0,4) = A
如果您仍然需要更高的效率,则可以将数据加载到Variant中,对其进行处理,然后将其返回到工作表:
Dim dataVar as Variant Dim i as Integer dataVar = Range("B10:F1000") For i = Lbound(dataVar, 1) to Ubound(dataVar, 1) ' Omitted code for your processing Next i Range("B10:F1000") = dataVar