Страницы: 1
RSS
Как заставить DateValue возвращать дату в российском формате (дд.мм.гггг)
 
Доброго всем дня!
Использую функцию DateValue для определения критерия фильтрации:  
Код
  den = DateValue(Range("D2"))
    With Лист4
    For m = 1 To .UsedRange.Columns.Count
    If .Cells(1, m).Value Like "Момент создания" Then .Range("A:AQ").AutoFilter Field:=m, Criteria1:=den
    Next    
    End With
Фильтр конечно работает, но если например в D2 стояло значение 03.01.2018, то в качестве критерия он будет использовать 01.03.2018
Иными словами функция видит даты не в формате дд.мм.гггг, а в американском варианте мм.дд.гггг
Как исправить данный момент или какую функцию использовать вместо DateValue?
Изменено: IvanMantrov - 06.02.2018 15:22:03
 
Проверяли? Возможно, разница в написании - это только внешнее отображение с помощью формата ячейки.
 
vikttur, проверял конечно. формат ячейки, из которой тянется дата и фильтруемых ячеек один и тот же.
 
Покажите пример
 
Если по теме, то никак, ибо функция возвращает всегда в одном формате,  а вот то что вам нужно, так отформатировать в тот формат что вам нужно.

только не совсем понятно , У вас в ячейке текстом прописана дата? Если нет, то и DateValue лишнее.
Изменено: БМВ - 06.02.2018 14:48:15
По вопросам из тем форума, личку не читаю.
 
vikttur,
Изменено: IvanMantrov - 06.02.2018 14:49:16
 
Я просил пример, а не рабочий файл с кучей бесполезной информации. Рыться в этом, выискивая то, что Вам нужно? Но Вам же нужно, а не помогающим! Вот и постарайтесь сами приблизить помощь.
Прикрепите нормальный пример к первому сообщению.
 
Цитата
vikttur написал:
Прикрепите нормальный пример к первому сообщению
Упростил. Прикрепил.
 
И все работает.
По вопросам из тем форума, личку не читаю.
 
Посмотрите какой формат нужен, можете макрорекордером определить и потом подредактируйте.
Код
Sub Макрос2()
    Лист11.Select
    If IsEmpty(Range("B2")) = False Then
    lr = Cells(Rows.Count, 1).End(xlUp).Row
    Cells(lr + 1, 1) = "Совпадения:"
    den = DateValue(Range("D2"))
    art = Range("B2").Value
    kor = Range("H2").Value
    s = Format(den, "M/D/YYYY")
    s = Replace(s, ".", "/")
    MsgBox s
     
    With Лист4
    For m = 1 To .UsedRange.Columns.Count
    If .Cells(1, m).Value Like "Момент создания" Then
        .Range("A:AQ").AutoFilter Field:=m, Operator:=xlFilterValues, Criteria2:=Array(2, s)
    End If
    Next
    
    End With
    
    Else
    MsgBox "Артикул не выбран"
    Exit Sub
    End If
End Sub

Изменено: skais675 - 06.02.2018 15:45:22
 
БМВ, да нет вроде. Если отталкиваться от примера, вот что предполагалось: 05.01.2018
и вот что оказалось в итоге в фильтре: 01/05/18
Изменено: IvanMantrov - 06.02.2018 15:47:47
 
skais675, Заработало наконец. Спасибо огромное!
 
Чтобы не зависеть от региональных настроек, строки 9-10 в #10 лучше заменить на:
Код
s = Format(den, "M\/D\/YYYY")
Владимир
Страницы: 1
Наверх