Фильтровать строку, чтобы она содержала только значения с «сегодняшнего дня» до воскресенья

#excel #vba

#excel #vba

Вопрос:

У нас есть еженедельная функция, в которой нам нужно убедиться, что включенные данные содержат только значения со дня создания отчета до следующего воскресенья. Я знаю, что проблема, с которой я сталкиваюсь, заключается в том, что мое EndDate значение не может быть отформатировано yyyy-mm-dd , но я не знаю, как двигаться дальше. Это то, что у меня есть:

 ' set value for 'EndDate'
Dim EndDate As Date
    EndDate = DateAdd("d", -Weekday(Now)   8, Now)
    
' reformat 'Required End' column to "yyyy-mm-dd"
ActiveSheet.Range("F2", "F50000").NumberFormat = "yyyy-mm-dd"

' filter results from StartDate to EndDate
ActiveSheet.ListObjects(1).Range.AutoFilter Field:=6, _
                               Criteria1:=">=" amp; Format(Date, "yyyy-mm-dd"), _
                               Operator:=xlAnd, _
                               Criteria2:="<=" amp; Format(EndDate, "yyyy-mm-dd")
 

Я получаю сообщение об ошибке:
Run time error '9': Subscript out of range

Комментарии:

1. Вероятно, у вас нет таблицы (listobject) на активном листе.

2. EndDate значение не может быть отформатировано yyyy-mm-dd , что не приведет к ошибке, о которой вы сообщаете. Кроме того, используйте CDbl(your_date) для различных сравнений вместо форматированной строки.