Страницы: 1
RSS
Удаление строк при условии., VBA.
 
Добрый день.
Пытаюсь написать макрос по удалению строк при условии - Cells(i, 16) >= Cells(i + 1, 3). Если условие ИСТИНА, то должны удалится три строки -
Range(Cells(i, 2), Cells(i + 2, 2)).EntireRow.Delete.
Подскажите, пожалуйста, что неправильно делаю?
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Неправильно то, что в Р36 значение ошибки, а ты его сравниваешь с числом.
Я сам - дурнее всякого примера! ...
 
Ошибки там должны быть. Как тогда правильно написать условие?
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
В 36 строке столбца Р ошибка, а не число. Можно добавить действия при ошибках в макросе, типа
On error resume Next, мол, если ошибка - игнорируй и переходи к следующей инструкции - тогда блок строк с ошибкой вместо даты останется не удаленным. З.Ы. Ага, щаз! Как раз удалит! :)
Инструкцию по действию на ошибку вставлять перед проверкой ячеек.

З.Ы. Опытные товарищи уже более грамотно подсказали. :)
Изменено: Пытливый - 08.04.2015 13:37:14
Кому решение нужно - тот пример и рисует.
 
Если сделать так:
Код
Sub delstrok()
    Dim i&, lstr&, r As Range
    Application.ScreenUpdating = False
    On Error Resume Next
    lstr = Cells(Rows.Count, 2).End(xlUp).Row
    For i = lstr To 3 Step -3
        If Cells(i, 16) >= Cells(i + 1, 3) Then
            If Err Then
                Err.Clear
            Else
                Range(Cells(i, 2), Cells(i + 2, 2)).EntireRow.Delete
            End If
        End If
    Next i
    Application.ScreenUpdating = True
End Sub
то строки с ошибками удалять не будет, а если просто добавить в твой код On Error Resume Next, то удалит и их.
Я сам - дурнее всякого примера! ...
 
Спасибо, Пытливый.
Спасибо, опытный товарищ, Серёжка.
:D
"..Сладку ягоду рвали вместе, горьку ягоду я одна."
 
Не за что, Володь.8)
Я сам - дурнее всякого примера! ...
Страницы: 1
Наверх