Ошибка с удалением 1 строки после некоторых проверок - PullRequest
0 голосов
/ 01 марта 2012

У меня проблема при попытке удалить всю строку с помощью кода, приведенного ниже:

Sub Macro1()
    Dim test1row As Long, test1 As Range, firstrowtodelete As Long

    test1row = 1

    Do 
        Set test1 = Sheets("Sheet1")l.Cells(test1row,1)

        If test1 <> "actest" Or test1 <> "dctest" Then
            firstrowtodelete = test1row
            Rows(test1row).Select
            Selection.Delete Shift:=xlUp
            Exit Do
        End If

        test1row = test1row + 1
    Loop
End Sub

Ошибка с Rows(test1row).Select. Удаляет строку, даже если это «actest» или «dctest». Если вы знаете, почему делитесь со мной! Спасибо! :)

Ответы [ 2 ]

1 голос
/ 01 марта 2012

Есть две проблемы с вашим кодом.

Первая проблема в этой строке:

Set test1 = Sheets("Sheet1")l.Cells(test1row,1)

Должно быть:

Set test1 = Sheets("Sheet1").Cells(test1row, 1)

И другая проблема здесь:

If test1 <> "actest" Or test1 <> "dctest" Then

Это должно быть так:

If test1 <> "actest" And test1 <> "dctest" Then

Ваше If утверждение всегда будет верным. Использование оператора And даст вам истинное значение, только когда значение ячейки не «actest» и это не «dctest», что, по-видимому, является желаемым поведением.

Вот полный рабочий код:

Sub Macro1()
    Dim test1row As Long, test1 As Range, firstrowtodelete As Long

    test1row = 1

    Do
        Set test1 = Sheets("Sheet1").Cells(test1row, 1)

        If test1 <> "actest" And test1 <> "dctest" Then
            firstrowtodelete = test1row
            Rows(test1row).Select
            Selection.Delete Shift:=xlUp
            Exit Do
        End If

        test1row = test1row + 1
    Loop
End Sub
1 голос
/ 01 марта 2012

Ваш If тест некорректен. Это всегда будет правдой.

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