VBA: получение эталонного значения из другого листа в качестве критерия для фильтра - PullRequest
0 голосов
/ 02 июля 2018

У меня есть два листа - «Критерии» и «Временные».

Я хочу применить фильтр на листе Критерии, где критерии будут взяты из активной ячейки "временного" листа. Мой макрос ниже по какой-то причине не работает.

Sub FilterTest1()
ActiveWorkbook.Sheets.Add After:=Worksheets(Worksheets.Count)
ActiveSheet.Name = "temporary"

ActiveSheet.[A:A].Value = Worksheets("Criteria").[A:A].Value

Cells.RemoveDuplicates Columns:=Array(1)

Range("A1").EntireRow.Delete

Dim B As Integer
B = Cells.CurrentRegion.Rows.Count

With Sheets("Temporary")
Selection.End(xlDown).Select
End With


With Sheets("Criteria")

.Range("$A:$B").AutoFilter
   .Range("$A:$B").AutoFilter field:=1, Criteria1:=Worksheets("temporary").ActiveCell.Value, Operator:=xlOr

End With

End Sub

Макрос заканчивается на

ошибка времени выполнения 438 "Объект не поддерживает это свойство или метод.

Какой правильный метод сделать?

Добавление дополнительной информации: цель состоит в том, чтобы изменить критерии по одному. Прямо сейчас он должен выбрать последнюю активную ячейку во Временном! A: A, но позже я бы сместил выделение вверх во Временном! A: A и возьму каждый лист активной ячейки в качестве критерия для фильтрации.

1 Ответ

0 голосов
/ 02 июля 2018

Было бы проще применить последнее значение в Temporary! A: A к переменной, чем полагаться на Select и Selection.

Однако весь ваш код, по-видимому, сводится к автофильтру, принимающему последнее значение в критерии! A: A в качестве фильтра. Добавление нового рабочего листа, копирование значений из Критериев! A: A, удаление дубликатов и выбор последней заполненной ячейки во Временном! A: A ничего не меняет. Если вы отсортировали данные во Временном! A: A, они могут измениться, но в настоящее время вы не изменяете критерии по сравнению с заполненным последним значением в Criteria! A: A.

Sub FilterTest1()
    dim c as variant
    with workSheets("Criteria")
        c = .cells(.rows.count, "A").end(xlup).value
        .Range("A:B").AutoFilter  field:=1, Criteria1:=c
    End With
End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...