Удаление ячеек зависит от их значений, работает нормально, но пропустил половину - PullRequest
0 голосов
/ 11 июля 2019

Мне нужно удалить 2 или более (переменные в зависимости от работы) ячейки в одной строке, начиная со строки 2, если 2 ячейки = ""

Я использовал этот код, и он уже работает нормально, кроме 1проблема

Sub Macro3()
    Dim s As Integer
    Dim ws As Worksheet

    Set ws = ThisWorkbook.Worksheets("Sheet2")

    For s = 2 To 22
        If ws.Range("G" & (s)) = "" And ws.Range("H" & (s)) = "" Then
            Union(ws.Range("G" & s), ws.Range("H" & s)).Select
            Selection.Delete Shift:=xlUp
        End If
    Next s
End Sub

проблема в том, что если у меня есть, например, из G2: H4 (2 или более, выполнив условие if), он удаляет только половину из них,

, если 5 строк удаляют только 3... и т. д.

, поэтому я думаю, что цикл не работает с текущей ячейкой (только предположения)

Прикрепите экраны до и после выполнения кода для получения дополнительной информации

до

before

после

after

1 Ответ

2 голосов
/ 11 июля 2019
Sub Macro3()

Dim s As Long
Dim ws As Worksheet

Set ws = ThisWorkbook.Worksheets("Sheet2")

For s = 22 To 2 Step -1

    If ws.Range("G" & s).Value = "" And ws.Range("H" & s).Value = "" Then 
        ws.Rows(s).Delete Shift:=xlUp
        'or:
        'ws.Range("G" & s & ":H" & s).Delete Shift:=xlUp
    End if

Next s

End Sub

После запуска кода:
enter image description here

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