我正在处理以下代码:
Sub RemoveNumber()
Dim Rng As Range
Dim i As Long
i = 1
Application.ScreenUpdating = True
While i <= 20000
Set Rng = Range("A" & i)
If IsNumeric(Rng.Value) = True Then
Rng.Delete Shift:=xlUp
ElseIf IsNumeric(Rng.Value) = False Then
i = i + 1
Else
i = i + 1
End If
Wend
End Sub
基本上,它遍历一列并删除带有数字的单元格。这很好用,但循环不会结束。通过插入Range("B2").value = i
进一步测试表明,当我达到18450(列中的第一个空单元格)时,我停止增加。但是肯定和空单元格应该在最后触发Else
语句,对吗?
答案 0 :(得分:3)
您的代码会遗漏行。当它删除rng时,下一个向上移动然后它移动到下一行。如果有背靠背数字值,它将跳过每隔一个值。
避免这一切的一个好方法是向后循环:
Sub RemoveNumber()
Dim Rng As Range
Dim i As Long
i = 1
Application.ScreenUpdating = True
For i = 20000 To 1 Step -1
Set Rng = Range("A" & i)
If IsNumeric(Rng.Value) And Len(Rng.Value) > 0 Then
Rng.Delete Shift:=xlUp
End If
Next i
End Sub