Функция смещения не будет работать, чтобы удалить все видимые ячейки, кроме заголовков - PullRequest
0 голосов
/ 27 марта 2019

Мой код работает, пока я не попытаюсь удалить все видимые ячейки (кроме заголовков) после фильтрации.Может кто-нибудь сказать мне, почему моя команда смещения дает мне ошибку, определенную приложением или объектом?

Я пробовал просто использовать строки, удаляя видимые ячейки, устанавливая диапазон.

    'Filter target cell out and remove all other rows
    With targetSheet.Range(targetRangeName)
        .AutoFilter Field:=17, Criteria1:="<>" & sourceCell.Value, Operator:=xlFilterValues
        .Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Delete
    End With

Iхотите удалить все видимые ячейки (кроме заголовков) после фильтрации.

1 Ответ

0 голосов
/ 27 марта 2019

Не ответ, но немного разбейте его, чтобы посмотреть, можно ли отладить:

Dim rng As range

With targetSheet.Range(targetRangeName)

    .AutoFilter Field:=17, Criteria1:="<>" & sourceCell.Value, _
                Operator:=xlFilterValues

    Set rng = .Offset(1, 0)
    Debug.Print rng.Address

    Set rng = rng.SpecialCells(xlCellTypeVisible)
    Debug.Print rng.Rows.Count

    rng.EntireRow.Delete

End With

РЕДАКТИРОВАТЬ : вы не можете сместить диапазон на одну строку, если он уже достигает последней строки на листе. Если все, что вы действительно хотите сделать, это исключить строку заголовка, то вы можете сделать что-то вроде этого:

Dim rng
Set rng = ActiveSheet.Columns(1)

Debug.Print rng.Address '>> $A:$A

'resize and offset to exclude the first row
Set rng = rng.Resize(rng.Rows.Count - 1, rng.Columns.Count).Offset(1, 0)

Debug.Print rng.Address '>> $A$2:$A$1048576
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...