Из того, что я вижу в других связанных вопросах о функции countif, я не понимаю, почему мой код не работает.Использование Countif в Excel для удаления строк
У меня есть поле, где я идентифицировал строки, которые я хочу удалить, чтобы содержать значение «GO AWAY». Ниже приведен код, который я использую, чтобы заставить их уйти. DF - это мой текущий рабочий лист, как определено «Set DF = CWB.Worksheets (« Удалить »)» и «Установить CWB = ThisWorkbook».
Dim iVal As Integer
Dim LastRow2 As Long
Dim ii As Integer
Do While (iVal > 0)
LastRow2 = DF.Cells(DF.Rows.Count, 1).End(xlUp).Row
iVal = DF.Application.WorksheetFunction.CountIf(DF.Range("d:d"), "GO AWAY")
For ii = 2 To LastRow2
If DF.Cells(ii, 4).Value = "GO AWAY" Then
Rows(ii).EntireRow.Select
DF.Cells.EntireRow.Select 'Caution to testers. This line and the next will delete the entire worksheet.
Selection.Delete Shift:=xlUp 'Caution to testers. This line and the previous will delete the entire worksheet.
End If
Next ii
Loop
Если я использую формулу в случайной ячейке:
=CountIf(D:D, "GO AWAY")
возвращает 128.
О, вы должны поставить 'WHILE' в конце концов! Поскольку вы не объявляете 'ival', он сразу закончит' do'. – Chrismas007
. Лучшие способы удаления строк см. Здесь: http://stackoverflow.com/questions/33744149/code-in-vba- loops-and-never-ends-how-to-fix-this –
@ScottCraner Не этот код: 'DF.Cells.EntireRow.Select Selection.Delete Shift: = xlUp' Удалить весь лист? – Chrismas007