2017-02-20 32 views
0

Я пытаюсь отфильтровать имя столбца «Уровень продаж 1» и содержит множество уровней продаж, из которых мне нужно только «Америка, глобальный поставщик услуг, WW Distribution», на листе есть столбцы от A до Y и всего 43295 записей.Autofilter VBA help «error 1004»

вот мой код, который бросает ошибку 1004 «Автофильтр метод класса диапазона не удалось»

Dim objXLApp As Object  
Dim xlApp As Object 

Set xlApp = CreateObject("Excel.Application") 

xlApp.Activesheet.Range("$A1:$Y43295").AutoFilter Field:=16,_  
Criteria1:=Array("Americas", "GLOBAL SERVICE PROVIDER", "WW Distribution"),_ 
     Operator:=xlFilterValues 

У меня есть другие коды в этой функции, и это одна из них.

+0

Это единственный код, который был запущен к моменту вызова метода автофильтра? Если я не ошибаюсь, вам необходимо установить диапазон как способный быть автофильтрованным перед изменением критериев. Я мог ошибаться, поскольку часто не использую автофильтр, но сначала я должен проверить. Кроме того, вы создаете приложение excel, но вы не создаете файл? Вы просто хотите просто открыть лист и отфильтровать его? Вы можете использовать FollowHyperlink или Workbooks.Open для этой цели. –

+1

Ваши строки продолжаются незаконно. Маркер продолжения строки определяется пробелом, за которым следует знак подчеркивания - код, который вы отправили, даже не компилируется. Также первая исполняемая команда 'Set xlApp = ...' стоит сама по себе, продолжая линию, это смущает черт из VBA ... и не будет компилироваться. –

+0

Эй, спасибо за ответ! При отправке кода я сделал ошибку. мой фактический код - xlApp.Activesheet.Range («$ A1: $ Y43295»). Поле AutoFilter: = 16, _ Критерии1: = Массив («Америка», «GLOBAL SERVICE PROVIDER», «WW Distribution»), _ Оператор: = xlFilterValues ​​ –

ответ

1

Я думаю, это потому, что с «CreateObject» вы начинаете новый экземпляр преуспевания, так что ActiveSheet будет пустой один

Хотя, если вы хотите, чтобы поймать экземпляр работает Excel, которая уже имеет надлежащий лист в качестве " active "one

Dim objXLApp As Object  
Dim xlApp As Object 

Set xlApp = GetObject(,"Excel.Application") 

xlApp.Activesheet.Range("$A1:$Y43295").AutoFilter Field:=16, Criteria1:=Array("Americas", "GLOBAL SERVICE PROVIDER", "WW Distribution"), Operator:=xlFilterValues 
+0

Спасибо! однако я сделал ошибку в своем посте. У меня есть мой код точно так же, как вы опубликовали, и он бросает эту ошибку. Я не хотел ставить «_» после заданного оператора –

+1

@MilanBillimoria, ваш пост вызывает «CreateObject» (создает новый экземпляр). Этот ответ вызывает «GetObject» (использует существующий экземпляр). Если ваш * действительный код * использует 'GetObject', тогда вы должны отредактировать свой вопрос, чтобы сказать это. Люди не могут догадаться, как выглядит ваш * фактический код *, и имейте в виду, что «вопросы хамелеона», которые меняются каждый раз, когда есть новый ответ, ужасно раздражают всех участников. Пожалуйста, * не торопитесь *, задавая вопрос о SO. –

+0

@ Mat'sMug, «вопросы хамелеона», классная формулировка! – user3598756