удаление строки с пустыми или нулевыми ячеками

Весь MS Office, программирование на Visual Basic for Applications и MS VB

Модератор: Naeel Maqsudov

Ответить
Tana_L
Сообщения: 13
Зарегистрирован: 21 май 2009, 12:12

Эдравствуйте! Подскажите, пожалуйста.Проблема такая. Надо проверить диапазон, если в нем кроме нулей и пустых ячеек ничего нет, то удалить строку.
Аватара пользователя
Naeel Maqsudov
Сообщения: 2570
Зарегистрирован: 20 фев 2004, 19:17
Откуда: Moscow, Russia
Контактная информация:

Нужно удаление всех строк проходяших через этот диапазон, если я правильно понял?

Код: Выделить всё

  Dim R As Range, RngEmpty As Boolean
  Set R = Range(".......")
   
  For Each ACell In R
    RngEmpty = IsEmpty(ACell.Value) Or ACell.Value = 0
    If Not RngEmpty Then Exit For
  Next
   
  If RngEmpty Then R.EntireRow.Delete
Аватара пользователя
AlexZZZ
Сообщения: 237
Зарегистрирован: 01 июн 2007, 00:27
Откуда: Москва и область

Может я не правильно понял условие, но если нужно проверить строки диапазона (а не весь диапазон) и пустые удалить, то так:

Код: Выделить всё

    Dim R As Range, n As Long
    Set R = Range("------")
    For n = R.Row + R.Rows.Count - 1 To R.Row Step -1
        If Application.WorksheetFunction.CountA _
            (Range(Cells(n, R.Column), Cells(n, R.Column + R.Columns.Count - 1))) = 0 Then _
            Rows(n).Delete
    Next n
Tana_L
Сообщения: 13
Зарегистрирован: 21 май 2009, 12:12

Я использовала оба варианта, т.к. действительно нужно проверить значения по строкам, а не всего диапазана, но ячейки могут быть нулевые или пустые, поэтому условие должно быть или-или. Спасибо!
Аватара пользователя
AlexZZZ
Сообщения: 237
Зарегистрирован: 01 июн 2007, 00:27
Откуда: Москва и область

Для удаления пустых строк и строк с нулевыми значениями, код должен быть такой:

Код: Выделить всё

    Dim R As Range, sR As Range, n As Long
    Set R = Range("-----")
    For n = R.Row + R.Rows.Count - 1 To R.Row Step -1
        Set sR = Range(Cells(n, R.Column), Cells(n, R.Column + R.Columns.Count - 1))
        If Application.WorksheetFunction.CountA(sR) - _
           Application.WorksheetFunction.CountIf(sR, "=0") = 0 Then _
           Rows(n).Delete
    Next n
Ответить