2016-09-29 20 views
0

我無法弄清楚,爲什麼下面的代碼不會刪除整個行如果山口N細胞有單詞"Completed"的基礎上刪除山口ñ標準整行

Sub DeleteRowBasedOnCriteria()  
Dim RowToTest As Long  

For RowToTest = Cells(Rows.Count, 14).End(xlUp).Row To 2 Step -1  

With Cells(RowToTest, 14)  
    If .Value <> "Completed" _  
    Then _  
    Rows(RowToTest).EntireRow.Delete  
End With  

Next RowToTest  

End Sub 

回答

0

我終於做到了用下面的代碼工作:

子DeleteRowBasedOnCriteria2()
表( 「進程內」)。選擇

Dim RowToTest As Long 

    For RowToTest = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row To 2 Step -1 
     With ActiveSheet.Cells(RowToTest, 14) 
      If .Value = "Completed" Then ActiveSheet.Rows(RowToTest).EntireRow.Delete 
    End With 
    Next RowToTest 

末次

1

問題與延續:

Sub DeleteRowBasedOnCriteria() 
    Dim RowToTest As Long 

    For RowToTest = Cells(Rows.Count, 14).End(xlUp).Row To 2 Step -1 
     With Cells(RowToTest, 14) 
      If .Value <> "Completed" Then Rows(RowToTest).EntireRow.Delete 
     End With 
    Next RowToTest 

End Sub 
+0

謝謝,但我想你的建議,出於某種原因,沒有什麼是越來越刪除。大部分行都是空白的; Col N中只有少數「已完成」。因此大多數行應刪除。 –

+0

@KimG是對片與數據***活性劑是運行宏***時?? –

+0

是的,它確定。看起來代碼在「Then」之後停止並跳過刪除部分。 –

0

這一建議是簡約但...

子DeleteRowBasedOnCriteria()
昏暗RowToTest只要

對於RowToTest =細胞( Rows.Count,14).End(xlUp).Row To 2 Step -1

隨着
如果.value的<> 「已完成」 的細胞(RowToTest,14)_
然後_
.EntireRow.Delete
結束隨着

接着RowToTest

結束子

+0

這太奇怪了。當我逐步瀏覽程序時,它會逐字跳過該行.EntireRow.Delete整個運行(而不僅僅是當它不適用時),就像其他程序一樣。我完全沉迷於這一個。還有其他想法嗎? –

+0

這是因爲您使用了_而不是If .Value <>「Completed」Then // .EntireRow.Delete // end if但是行被刪除了,對嗎?如果不是,則斷點,檢查值是否爲「已完成」。區分大小寫。 – Pierre