b.wag Ответов: 1

Ошибка времени выполнения '1004' определяемая приложением или объектом ошибка при попытке фильтрации


Привет,

У меня возникли проблемы с фильтрацией моего набора данных. Каждый раз, когда я пытаюсь использовать параметр range.autofilter, я получаю ошибку времени выполнения "1004": ошибка, определяемая приложением или объектом.

Пожалуйста, найдите часть моего кода ниже
'Filter sheet RSPS5 & delete 'CLOSED' rows
With wbDest.Sheets("RSPS5")
    .Activate
    LastRowDest = .Range("B" & Rows.Count).End(xlUp).Row
End With
wbDest.Sheets("RSPS5").Range("B4:DX" & LastRowDest).AutoFilter Field:=20, Criteria1:="CLOSED", Header:=xlYes
With wbDest.Sheets("RSPS5")
    .Range("U7:U" & LastRowDest).SpecialCells(xlCellTypeVisible).EntireRow.Delete
    LastRowDest = .Range("B" & Rows.Count).End(xlUp).Row
End With
wbDest.Sheets("RSPS5").Range("B4:DX" & LastRowDest).AutoFilter Field:=20


wbDest был определен ранее в макросе и правильно работает для кода до этой части.
Столбец, который я хочу отфильтровать, - это " U "(и должен быть 20-м столбцом, если вы начинаете отсчет с столбца "B").

Что я уже пробовал:

Существует некоторый избыточный код. Я пробовал несколько способов заставить его работать, явно добавляя книги и рабочие листы перед строками фильтра.
Самое странное, что во время отладки я вижу, что рабочая книга, рабочий лист и диапазон определены.
Я могу вручную фильтровать строки, содержащие "закрытый" текст, так что это тоже не должно быть проблемой, по моему неопытному мнению.

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

RedDk

Ошибка Excel 1004-это самая внешняя общая ошибка ... он возвращается в виде сообщения, предупреждающего о том, что почти все и вся Excel потерпит неудачу. Так что вам придется отлаживать, чтобы добраться до деталей.

CHill60

Предполагая, что это второй автофильтр, который терпит неудачу - попробуйте удалить уже установленный автофильтр, прежде чем вставлять новый

b.wag

Я даже не могу пройти мимо первого автофильтра.
В других файлах, где макрос также использует автофильтр, он прекрасно работал и раньше. С этого момента я не могу заставить работать какой-либо код автофильтра.

CHill60

Ах, мое недоразумение. Если вы поставите точку останова на первом автофильтре и используете

? wbDest.Sheets("RSPS5").Range("B4:DX" & LastRowDest).Address
вы получаете ошибку или вывод адреса? Напр. $B$4:$DX$200

CHill60

Подожди … Я не помню, чтобы заголовок был вариантом ... попробуйте

wbDest.Sheets("RSPS5").Range("B4:DX" & LastRowDest).AutoFilter Field:=20, Criteria1:="CLOSED"

b.wag

Спасибо, это действительно помогло. Я смотрел на эту проблему в течение нескольких часов, и я также посмотрел документацию MSDN, но каким-то образом мой мозг, должно быть, пропустил часть заголовка.

CHill60

Лол! Я пропустил его, потому что он был на следующей линии. Рад, что теперь все улажено.

1 Ответов

Рейтинг:
7

CHill60

Только что подтверждено в документации MSDN по адресу Диапазон.Метод автофильтра (Excel) | Microsoft Docs[^] что именованный параметр Header это неверно так

wbDest.Sheets("RSPS5").Range("B4:DX" & LastRowDest).AutoFilter Field:=20, Criteria1:="CLOSED", Header:=xlYes
должно быть
wbDest.Sheets("RSPS5").Range("B4:DX" & LastRowDest).AutoFilter Field:=20, Criteria1:="CLOSED"
Мне удалось получить аналогичный код для фильтрации в моем собственном VBA.