Autofiltr psuje format daty?

Aug 25 2020

Próbuję użyć autofiltra do filtrowania kolumny dat w zakresie dat. Napisałem swój kod i zauważyłem, że nie działa, więc go ogłupiałem i spróbowałem nagrać makro. Wygląda na to, że nawet nagrywanie makra nie działa, ponieważ psuje formaty daty. Mam program Excel w języku hiszpańskim i próbuję użyć formatu daty dd / mm / rrrr. Zdecydowałem się nagrać makro filtrując od 10.01.2020 do 20.01.2020 i daje mi następujący kod:

Selection.AutoFilter

ActiveSheet.Range("$A$1:$AA$95").AutoFilter Field:=18, Criteria1:= _
    ">=10/01/2020", Operator:=xlAnd, Criteria2:="<=20/01/2020"

Kiedy zrobiłem to ręcznie podczas nagrywania makra, odfiltrowało 3 wyniki, ale kiedy próbuję ponownie uruchomić makro, psuje format daty. Jeśli sprawdzę zastosowany filtr, pojawi się komunikat „jest po lub równy: 01/10/2020” i „jest przed lub równy: 20/01/2020”. Masz jakiś pomysł, dlaczego zmienia format tylko jednej daty, kiedy uruchamiam kod i jak to naprawić?

Dziękuję Ci

Próbowałem również użyć funkcji Format

ActiveSheet.Range("$A$1:$AA$95").AutoFilter Field:=18, Criteria1:= _
    ">=" & Format("10/01/2020", "dd/mm/yyyy"), Operator:=xlAnd, Criteria2:="<=" & Format("20/1/2020", "dd/mm/yyyy")

I nadal zmienia się „10/01/2020” na „01/10/2020” podczas filtrowania

Odpowiedzi

Mech Aug 25 2020 at 02:39

Excel lubi zakładać formatowanie. Uważam, że jest to oparte na ustawieniach języka. Możesz ponownie sformatować za pomocąActiveSheet.Range("$A$1:$AA$95").NumberFormat = "dd/mm/yyyy"

Selection.AutoFilter

ActiveSheet.Range("$A$1:$AA$95").AutoFilter Field:=18, Criteria1:= _
    ">=10/01/2020", Operator:=xlAnd, Criteria2:="<=20/01/2020"
ActiveSheet.Range("$A$1:$AA$95").NumberFormat = "dd/mm/yyyy"