excel vba Do Loop迴圈...變成無限迴圈了

我有一個工作表,想用巨集將工作表中,E欄位資料為零或負數者,整列刪除.

Sub 篩除零與負數()

Dim k, t As Long

t = Range("E65536").End(xlUp).Row '將E欄位的資料數指給t

k = 1Do While k < t 'k的值大於t時跳出迴圈

If Range("E" & k).Value > 0 Then 'E欄資料大於0時不做處理

k = k + 1

Else

Rows(k).Select

Selection.Delete Shift:=xlUp 'E欄的數值小於等於零時,刪除整列

End If

Loop

End Sub

結果一執行,就變成無限回圈了,有哪裡設定錯了嗎?不是應該k值大於t值,就應該跳出迴圈了嗎?

已更新項目:

原來如此,一直習慣由上到下來處理資料,改了好幾個方式都不行,

沒想到就只是不知道刪除列要從後面刪的訣竅而已,又學到一招了

謝謝jan大大指教^^y

1 個解答

評分
  • jan
    Lv 4
    9 年前
    最佳解答

    刪除列要從後面開始刪,改一下方法

    Sub 篩除零與負數()

    Dim k, t As Long

    '刪除列要從後面開始刪

    t = Range("E65536").End(xlUp).Row

    For i = t To 1 Step -1

    If Range("E" & i).Value <= 0 Then

    Rows(i).Delete Shift:=xlUp

    End If

    Next

    End Sub

還有問題?馬上發問,尋求解答。