Как удалить много строк одновременно, не получая сообщение об ошибке «Удалить метод класса диапазона»? - PullRequest
0 голосов
/ 09 января 2019

На этом листе я пытаюсь найти в диапазоне пустые ячейки и удаляю их соответствующие строки.

Sub Delete()

'Amass row numbers
Dim B, Blank As Range
Dim Deletion() As Long
Dim D As Long

Set Blank = Sheets("Quotation").Range("I17:I3816")

D = 0

For Each B In Blank

    If IsEmpty(B) Then

        D = D + 1

        ReDim Preserve Deletion(D)

        Deletion(D) = B.Row

    End If

Next B

Dim Amass As Range

'A starting point for the Amass range - should it need one pre-Union?
Set Amass = Sheets("Quotation").Range("10000:10000")

'Amass rows
For i = 1 To D

    Set Amass = Union(Amass, Sheets("Quotation").Range(Deletion(i) & ":" & Deletion(i)))

Next i

'Delete rows
Amass.EntireRow.Delete

End Sub

Не удалось выполнить последнее действие с ошибкой:

«Не удалось удалить метод класса диапазона»

Правильно ли я использую массив и ReDim Preserve?

1 Ответ

0 голосов
/ 09 января 2019

Я думаю, что-то вроде того, что вы ищете:

Sub tgr()

    Dim ws As Worksheet
    Dim rCheck As Range
    Dim rDel As Range

    Set ws = ActiveWorkbook.Sheets("Quotation")

    For Each rCheck In ws.Range("I17", ws.Cells(ws.Rows.Count, "I").End(xlUp)).Cells
        If IsEmpty(rCheck) Then
            If Not rDel Is Nothing Then Set rDel = Union(rDel, rCheck) Else Set rDel = rCheck
        End If
    Next rCheck

    If Not rDel Is Nothing Then rDel.EntireRow.Delete

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