2015-11-16 4 views
1

Я ищу фильтр для моей таблицы в датах, основанный на удобном для пользователя выпадающем списке.VBA Код для фильтрации между диапазонами дат

Как показано на рисунке, раскрывающийся список заполняется только месячными именами. Существует скрытая формула, которая передает эти имена в 2 даты в ячейках U4 и U5. Даты - это первый день месяца и последний день месяца.

Я хочу, чтобы можно было выбрать месяц, а затем нажмите кнопку, чтобы отфильтровать таблицу объектов списка ниже по датам.

вот мой текущий код:

Sub Filters() 

    Range("U4", "U5").Copy 
    Range("V4").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
      :=False, Transpose:=False` 

    ActiveSheet.ListObjects("Table1").Range.AutoFilter Field:=2, Criteria1:=">=" & Range("V4").Value, Operator:=xlAnd, Criteria2:="<=" & Range("V5").Value, Operator:=xlAnd 

End Sub 

Но фильтр не «выполнить» Я скопировал клетку к V4 и V5, чтобы увидеть, если формулы были что-то делать с ним, но не радость.

ответ

0

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

With ActiveSheet 
    .Range("V4:V5") = .Range("U4:U5").Value2 

    .ListObjects("Table1").Range.AutoFilter '<~~turn off any previous filtering operation 
    .ListObjects("Table1").Range.AutoFilter Field:=2, _ 
      Criteria1:=">=" & Application.Min(.Range("V4").Value2, .Range("V5").Value), _ 
      Operator:=xlAnd, _ 
      Criteria2:="<=" & Application.Max(.Range("V4").Value2, .Range("V5").Value) 
End With 

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

+0

Это большое спасибо! –

Смежные вопросы