Ошибка 91 при попытке скопировать все ячейки на листе. Но только для некоторого кода - PullRequest
1 голос
/ 02 февраля 2020

Я пытаюсь скопировать все данные с листа "private" на лист с именем "topthree".

Dim r As Range
Sheets("private").Select
Set r = ActiveSheet.AutoFilter.Range
r.Select
Selection.Copy Sheets("topthree").Range("A1")

В третьей строке выдается ошибка: "Ошибка выполнения 91: переменная объекта или если переменная блока не установлена ​​"

Странно то, что у меня точно такой же код в верхней части макроса.

Dim rng As Range
Sheets("eBS").Select
Set rng = ActiveSheet.AutoFilter.Range
r.Select
Selection.Copy Sheets("private").Range("A1")

И этот код работает просто отлично. В чем может быть проблема здесь? / Jens

1 Ответ

0 голосов
/ 02 февраля 2020

Скорее всего, ваш AutoFilter выключен.

Другое дело, нет необходимости использовать 'Select' и 'Selection' для копирования диапазона с одного листа на другой, см. Модифицированный код ниже:

Модифицированный код

Dim r As Range

With Sheets("private")
    ' make sure Auto_filter is on
    If .AutoFilterMode = False Then
        .Range("A1").AutoFilter ' <-- in case your Auto-Filter range starts at cell "A1"
    End If

    Set r = .AutoFilter.Range
End With

' Copy >> Paste without selecting
r.Copy Destination:=Sheets("topthree").Range("A1")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...