任何人都可以找出为什么这个VBA脚本的整数停止增加?

我正在处理下面的代码:

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进一步testing。value Range("B2").value = i显示当我达到18450(列中第一个空单元格)时,我停止增加。 但是,肯定和空的单元格应该触发最后的Else语句,对吗?

您的代码将错过行。 当它删除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