Excel VBA объект требуется ошибка во время выполнения - PullRequest
0 голосов
/ 01 ноября 2018

Я очень новичок в VBA и только начинаю учиться. У меня есть код, чтобы соответствовать всем ячейкам столбца "M" в Sheet1 и Sheet3, и удалить все строки из Sheet1, которые содержат любое значение из столбца "M" в Sheet3. Если я провожу его с помощью F8, я не получаю никакой ошибки, но когда я назначаю его кнопке, во время выполнения происходит сбой с ошибкой «Требуется объект». Я попробовал несколько вещей, которые нашел в Интернете, но ни одна из них, похоже, не работает. Ниже мой код. Любая помощь приветствуется.

Sub DeleteRows()

    Dim rng As Range
    Dim rng2 As Range
    Dim cell As Object
    Dim cell2 As Object

    Set rng = Sheets("Sheet1").Range("M2:M1541")
    Set rng2 = Sheets("Sheet3").Range("M2:M30")

    For Each cell In rng
        For Each cell2 In rng2
            If cell.Value = cell2.Value Then
                cell.EntireRow.Delete
            End If
        Next
    Next
    Application.ScreenUpdating = True

End Sub

Заранее спасибо!

1 Ответ

0 голосов
/ 01 ноября 2018

Вы можете пройтись по ячейкам в sheet2 и отфильтровать эти элементы в sheet1. Тогда у вас не будет двойной петли.

Sub Button1_Click()
    Dim ws As Worksheet, sh As Worksheet
    Dim LstRw As Long, Rng As Range, Frng As Range, c As Range, Nrng As Range

    Set ws = Sheets("Sheet2")
    Set sh = Sheets("Sheet1")

    With ws
        LstRw = .Cells(.Rows.Count, "M").End(xlUp).Row
        Set Rng = .Range("M2:M" & LstRw)
    End With

    With sh
        Set Frng = .Range("M2:M" & .Cells(.Rows.Count, "M").End(xlUp).Row)
        For Each c In Rng.Cells
            .Range("M1").AutoFilter Field:=1, Criteria1:=c

            On Error Resume Next
            Set Nrng = Frng.SpecialCells(xlVisible)
            On Error GoTo 0
            If Nrng Is Nothing Then
            Else
                Frng.EntireRow.Delete
            End If
        Next c
        .AutoFilterMode = False
    End With

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