VBA - удаление строк по датам [дубликат]

Другой способ: overflow-y:hidden для родителя с дополнением.

#wrap {
    overflow-y: hidden;
    padding: 0 10px;
}
#wrap > div {
    width: 100px;
    height: 100px;
    box-shadow: 0 0 20px -5px red;
}

http://jsfiddle.net/qqx221c8/

3
задан Energizer1 17 April 2017 в 15:10
поделиться

2 ответа

Работа снизу вверх. Если вы удаляете строку, все перемещается вверх, и вы пропускаете эту строку на следующей итерации.

Вот «кишки» кода для обработки снизу.

With Worksheets("Sheet1")
    For rw = .Cells(.Rows.Count, "B").End(xlUp).Row To 2 Step -1
        Select Case UCase(.Cells(rw, "B").Value2)
            Case "FG", "QC", "CS"
                .Rows(rw).EntireRow.Delete
        End Select
    Next rw
End With
7
ответ дан Jeeped 15 August 2018 в 16:21
поделиться
  • 1
    Я писал буквальный ответ (в комплекте с заявлением Case) haha: D – David Zemens 17 April 2017 в 15:20
  • 2
    Черт, я только что закончил печатать и публиковать почти тот же код;) – Shai Rado 17 April 2017 в 15:21

Поскольку для For Each нет обратного цикла, вам нужно использовать несколько иной подход.

Кроме того, ваш код с несколькими If s и OR «кричит для использования Select Case.

Dim StatusRange As Range
Dim i As Long

Set StatusRange = Range("B2", Range("B2").End(xlDown))

' loop backward when deleting Ranges, Rows, Cells
For i = StatusRange.Rows.Count To 1 Step -1
    Select Case StatusRange(i, 1).Value
        Case "FG", "QC", "CS"
            StatusRange(i, 1).EntireRow.Delete
        Case Else ' for the future if you need it

    End Select
Next i
1
ответ дан Shai Rado 15 August 2018 в 16:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: