2013-07-26 4 views
0

Я работаю с автофильтром в макросе Excel. Я записал макрос, чтобы автофильтр моего списка. То, что я пытаюсь выполнить:Array ссылается на другой лист

  1. пользователя будет вводить в нескольких именах в отдельном листе
  2. макроса будет сделать, это отфильтровать список, расположенный в рабочем листе # 2 по именам (бывший рабочий лист # 1.) пользовательские входы.

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

Возможно ли это? Можете ли вы внести какие-либо изменения в мой код?

ActiveSheet.Range("$A$1:$F$786").AutoFilter Field:=1, Criteria1:=Array(_ 
     "a.plegaria", "anna-marie.madrid", "annie-kaye.violante", "ayla-marie.pascual", _ 
     "beda-jr.jacob"), Operator:=xlFilterValues 
+1

ваш вопрос немного неясно ... сколько листов есть в вашей книге? где у вас есть данные? и т. д. ... один совет - попробуйте использовать «Расширенный фильтр», который может быть лучшим решением в такой ситуации. Макро-рекордер тоже будет полезен. –

+0

У меня есть 2 листа. лист 1 содержит список имен. рабочий лист 2 содержит таблицу. Я пробовал макрокоманд, и результатом является приведенный выше код. К сожалению, массив отображает конкретные имена. что, если пользователь вводит другое имя? –

+0

поэтому я предлагаю его снова - попробуйте использовать 'Advanced filter' (не' AutoFilter'), которые предоставляют больше опций, включая подстановочные знаки. –

ответ

0

, например

Dim rData     As Range 
    Dim vCriteria 

    Set rData = ActiveSheet.Range("A1:F786") 

    vCriteria = Application.Transpose(Sheets("Sheet2").Range("A1").CurrentRegion.Value) 
    rData.AutoFilter field:=1, Criteria1:=vCriteria, Operator:=xlFilterValues