2016-09-29 2 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

Я, наконец, сделал это для работы со следующим кодом:

Sub DeleteRowBasedOnCriteria2()
Sheets ("InProcess"). Выберите

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

Спасибо, но я попробовал ваше предложение, и по какой-то причине ничего не получает удален. Большинство строк пустые; только некоторые из них имеют «Completed» в Col N. Так что большинство строк должно быть удалено. –

+0

@KimG Лист с данными *** Активен *** когда макрос запускается? –

+0

Да, конечно. Похоже, что код останавливается после «Then» и пропускает часть удаления. –

0

Это предложение является минималистичный, но ...

Sub DeleteRowBasedOnCriteria()
Dim RowToTest As Long

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

С Cells (RowToTest, 14)
Если .Value <> "Completed" _
Тогда _
.EntireRow.Delete
End With

Следующая RowToTest

End Sub

+0

Это так странно. Когда я просматриваю программу, она буквально пропускает строку .EntireRow.Delete для всего запуска (не только тогда, когда она не применяется), так же, как и другая программа. Я полностью потрясен этим. Любые другие идеи? –

+0

Это потому, что вы использовали _ вместо If .Value <> «Completed» Then // .EntireRow.Delete // end if Но строка удалена, правильно? Если нет, точка останова, проверьте, установлено ли значение «Завершено». Деликатный случай. – Pierre

Смежные вопросы