Страницы: 1
RSS
Ошибка при фильтрации по датам
 
В качестве критериев фильтрации использую значения ячеек с другого листа:
Код
With Sheets("Расхождения")
    datapi = Sheets("Макрос").Range("B3") - 1
    datai = Sheets("Макрос").Range("F5")
    For u = 1 To .UsedRange.Columns.Count
        If .Cells(1, u).Value Like "Дата учета" Then
            .Range("A:X").AutoFilter Field:=u, Criteria1:= _
            "<=" & CDbl(CDate(datapi)), Operator:=xlAnd, Criteria2:=">=" & CDbl(CDate(datai))
        End If
    Next
    End With
При попытке фильтрации выдает ошибку. Обычно этот метод работает. В этом можно убедиться если в файле-примере поменять в коде "Расхождения" на "Расхождения 2". На листе "Расхождения 2" схожие данные. При этом ошибки там не возникает.
 
Возможно по причине отсутствия Автофильтра (сроки с фильтрами) на листе Расхождение.
Изменено: gling - 13.08.2018 10:56:03
 
Мросто на листе Расхождения нет фильтра.
По вопросам из тем форума, личку не читаю.
 
gling,точно не поэтому
.Range("A:X").AutoFilter - это добавляет фильтр, независимо от того был он там или нет
Например, если его убрать с листа Расхождения2, то он будет добавлен автоматически.
С другой стороны, если заранее включить фильтр на первом листе, то все работает.
Тогда возникает вопрос: почему на один лист фильтр добавляется, а на другой тем же самым кодом - не хочет???
 
по тому что среди A:X нет поля с номером 34 (AH)
По вопросам из тем форума, личку не читаю.
 
Возможно по тому, что диапазоны таблиц разные Попробуйте заменить диапазон фильтра на .Range("A:AJ")
Изменено: gling - 13.08.2018 11:09:11
 
Спасибо! Значит просто расширить диапазон нужно, фильтруемый.
Страницы: 1
Наверх