当B列中的任何一行单元格值都包含“NEW”时,我试图使列A和列B都为空。我在C列中总共有278005行,运行代码时出现溢出错误。有人可以帮忙吗?提前谢谢。
Sub dltnew()
Dim i As Double
Dim lrow As Double
lrow = Sheets("today").Range("C" & Rows.Count).End(xlUp).Row
For i = 2 To lrow
If Sheets("today").Cells(i, 2).Value = "NEW" Then
Sheets("today").Cells(i, 2).Value = ""
Sheets("today").Cells(i, 1).Value = ""
End If
Next i
End Sub
答案 0 :(得分:0)
任何形式的批量操作都比循环细胞的cuurent方法更有效。 AutoFilter method似乎有可能加快速度。
Sub dltnew()
On Error Goto bm_Safe_Exit
appTGGL bTGGL:=False
With Worksheets("today")
If .AutoFilterMode Then .AutoFilterMode = False
With .Cells(1, 1).CurrentRegion
.AutoFilter field:=2, Criteria1:="new"
With .Resize(.Rows.Count - 1, 2).Offset(1, 0)
If CBool(Application.Subtotal(103, .Cells)) Then
.Cells.ClearContents
End If
End With
End With
If .AutoFilterMode Then .AutoFilterMode = False
End With
bm_Safe_Exit:
appTGGL
End Sub
Sub appTGGL(Optional bTGGL As Boolean = True)
With Application
.ScreenUpdating = bTGGL
.EnableEvents = bTGGL
.DisplayAlerts = bTGGL
.Calculation = IIf(bTGGL, xlCalculationAutomatic, xlCalculationManual)
End With
End Sub
通过关闭屏幕更新,计算,事件处理等可以获得额外的效率。我已经将他们的代码移动到一个小辅助子,而不是在主子代中重复两次。