Кодирование текстовых фильтров в Excel 2007 - PullRequest
0 голосов
/ 21 мая 2009

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

Я сохраняю дату, которую мне нужно отфильтровать, как «CurrDay», и пытаюсь вернуть эту сохраненную дату обратно в алгоритм фильтрации. Это не работает, и мне нужно выяснить, как это сделать, чтобы закончить этот код. Каждый раз, когда я запускаю код, он возвращает имя CurrDay в фильтре вместо даты, хранящейся в переменной CurrDay.

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

КОД:

Sub Finishing_A59_Filter()
'
' Finishing_A59_Filter Macro

' This macro will activate the A59 and Filter it properly for standard orders
' 

'This macro does not include the VMI's and APS orders in the code
' 
'

Dim Currday As Date

    Currday = Date + 7
    UName = Application.UserName


    Workbooks.Open Filename:="G:\Copy Modified A59 5-19-2009.xlsm", UpdateLinks _
        :=0
    Range("M2").Select
    ActiveCell.Value = Currday

    Columns("Q:Q").Select
    Selection.NumberFormat = "mm/d/yyyy"

    ' Filter the sheet to remove VMI's and APS orders

    ActiveSheet.Range("$A$3:$AA$2941").AutoFilter Field:=23, Criteria1:=Array( _
        "01", "04", "06", "08", "09", "10", "15", "25", "="), Operator:=xlFilterValues

   ' Set the proper date range for the sheet - This needs to be seven days beyond the current date

    ActiveSheet.Range("$A$3:$AA$2941").AutoFilter Field:=17, Criteria1:= _
        "<=Currday", Operator:=xlAnd

1 Ответ

1 голос
/ 21 мая 2009

Вам необходимо объединить переменную со строкой критериев.

ActiveSheet.UsedRange.AutoFilter Field:=17, Criteria1:= _
        "<=" & Currday, Operator:=xlAnd

Кроме того, лучше использовать «UsedRange» вместо создания большого диапазона, потому что он не работает, если ваши данные выходят за пределы вашего произвольного диапазона, и является пустой тратой ресурсов, если это не так.

...