2016-09-29 8 views
0

Col Nのセルに"Completed"という単語が含まれていると、次のコードで行全体が削除されない理由がわかりません。継続とCol N基準に基づいて行全体を削除する

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 

End Subの

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で "Completed"を持っているので、ほとんどの行は削除する必要があります。 –

+0

@KimGマクロが実行されたときに、データが***アクティブな***シートですか? –

+0

はい、それは確かです。コードが「Then」の後に停止し、削除部分をスキップするように見えます。 –

0

という示唆は最小限であるが、...

サブDeleteRowBasedOnCriteria()
暗いRowToTest限り

RowToTest =細胞について( Rows.Count、14)。End(xlUp).Row To 2ステップ-1

End Subの

次にRowToTest

でそして "完了" 細胞(RowToTest、14)
.Valueの<>場合_
_
.EntireRow.Delete
端と

+0

これはとても奇妙です。プログラムをステップ実行すると、他のプログラムを実行したときと同じように、(実行されないときだけでなく)実行全体に対して.EntireRow.Deleteという行が文字通りスキップされます。私は完全にこの1つに困惑しています。他のアイデアは? –

+0

これは、If .Value <> "Completed"の代わりに_を使用したためです。// .EntireRow.Delete // end ifしかし、行が削除されました。そうでない場合は、ポイントをブレークし、値が「Completed」であることを確認します。大文字と小文字を区別。 – Pierre