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

时间:2016-01-29 17:32:05

标签: excel 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进一步测试表明,当我达到18450(列中的第一个空单元格)时,我停止增加。但是肯定和空单元格应该在最后触发Else语句,对吗?

1 个答案:

答案 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