Удалить всю строку, если весь диапазон пуст? - PullRequest
0 голосов
/ 11 февраля 2019

Никогда не приходилось делать это для всего диапазона, но только для каждой ячейки для одного столбца, поэтому мне нужно выяснить, верно ли это.Я хочу перебрать диапазон столбцов (E2: S2) и, если каждая ячейка пуста, удалить всю строку.Если в этом диапазоне есть хотя бы одна ячейка с данными, сохраните строку.

Как я могу отредактировать это, чтобы создать цикл For / Next?

Sub DeleteRowsWithEmptyColumnDCell()
    Dim rng As Range
    Dim i As Long
    Set rng = ThisWorkbook.ActiveSheet.Range("E2:S2") ' <- and then loop to next row, etc..

    With rng
        For i = .Rows.Count To 1 Step -1
            If .Item(i) = "" Then
                .Item(i).EntireRow.Delete
            End If
        Next i       
    End With

End Sub

Нужно ли добавить цикл for/next вокруг rng?

1 Ответ

0 голосов
/ 11 февраля 2019

Имейте в виду Lastrow replace .Rows.Count .При необходимости измените столбец, для которого рассчитывается Lastrow.Для этого примера я использую Столбец A .

Попробуйте:

Option Explicit

Sub DeleteRowsWithEmptyColumnDCell()

    Dim rng As Range, cell As Range
    Dim i As Long, y As Long, DeleteRow As Long, Lastrow As Long
    Dim cellEmpty As Boolean

    With ThisWorkbook.ActiveSheet

        Lastrow = .Cells(.Rows.Count, "A").End(xlUp).Row

        For y = Lastrow To 2 Step -1

            Set rng = .Range("E" & y & ":S" & y)

            cellEmpty = False

            For Each cell In rng

                If cell.Value <> "" Then
                    cellEmpty = False
                    Exit For
                Else:
                    cellEmpty = True
                    DeleteRow = cell.Row
                End If

            Next

                If cellEmpty = True Then
                    .Rows(DeleteRow).EntireRow.Delete
                End If

        Next y

    End With

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...