Avatar billede christopher21 Juniormester
04. april 2018 - 15:19 Der er 14 kommentarer

Ændre datoformat til dd-mm-yyyy

Hej,
Jeg har en masse datoer i kolonne D, som jeg ønsker bliver ændret til formatet "DD-MM-YYYY"
Hvilken kode kan jeg bruge i VBA til at erstatte de forkert formarterede datoer?
Tak på forhånd!
Avatar billede christopher21 Juniormester
04. april 2018 - 15:27 #1
Det står lige nu i formatet yy-mm-dd og det er det jeg ønsker at ændre
Avatar billede claes57 Ekspert
04. april 2018 - 15:37 #2
har du prøvet bare at klik-markere kolonnen, og vælge formatér celler / dato og pile ned i listen, til du kommer til det ønskede layout.
Avatar billede christopher21 Juniormester
04. april 2018 - 15:41 #3
Det er en opgave jeg har fået, så jeg skal gøre det gennem VBA
Avatar billede claes57 Ekspert
04. april 2018 - 16:14 #4
Avatar billede Dan Elgaard Ekspert
04. april 2018 - 16:26 #5
Range("D:D").NumberFormat = "dd.mm.yyyy"
Avatar billede Dan Elgaard Ekspert
04. april 2018 - 16:32 #6
Hov...
Jeg ser nu, at du vil have bindestreger:

Range("D:D").NumberFormat = "dd-mm-yyyy"
Avatar billede christopher21 Juniormester
04. april 2018 - 16:49 #7
Tak for hjælpen! Koden virker desværre ikke for mig Dan, der sker ikke noget i excel :/
Avatar billede christopher21 Juniormester
04. april 2018 - 17:39 #8
Datoen står som tekst, skal jeg lige tilføje
Avatar billede Dan Elgaard Ekspert
04. april 2018 - 19:25 #9
Så kunne det jo tyde på, at det ikke er en dato, der står i cellerne, men måske en tekst, der ligner en dato...

Så er du nødt til, at lave et loop, der gennemløber alle cellerne i kolonnen, og laver dem om til datoer...
Avatar billede Dan Elgaard Ekspert
04. april 2018 - 19:28 #10
Dim Counter As Long
Dim LastRow As Long
LastRow = Range("D" & Rows.Count).End(xlUp).Row

For Counter = 1 To LastRow
    Range("D" & Counter).Value = DateSeriel(Right$(Range("D" & Counter).Value,2),Mid$(Range("D" & Counter).Value,4,2),Left$(Range("D" & Counter).Value,2))
Next

Ikke testet - lavet sådan lige ud af hovedet - ret selv syntak og stavefejl - men, nu har du ideen :-)
Avatar billede Dan Elgaard Ekspert
04. april 2018 - 19:30 #11
HOV !!!

Jeg fik vist byttet rundt på Left$() og Right$() i skyndingen - ret det lige selv :-)
Avatar billede christopher21 Juniormester
04. april 2018 - 19:55 #12
Får desværre en  Run-time error "13", når jeg skriver koden :/
Avatar billede Dan Elgaard Ekspert
04. april 2018 - 20:26 #13
Tja, nu er du forhåbenlig VBA programør, siden du er ved, at skrive et VBA program?!?

Men, den fejl kommer, naturligvis, hvis der er celler i kolonne D, der ikke opfylder det format, som du selv har givet - det kunne være enten tomme celler, eller at der er en overskriftscelle i kolonnen, eller noget tredje...

Du skal selvfølgelig selv tilrette koden, så den tager hensyn til celler, der ikke overholder det format, du gav - jeg kan jo ikke vide, om det forholder sig sådan, da jeg ikke har dit regneark - jeg har bare taget alle celler i kolonnen, der ligger indenfor 'UsedRange', men indholdet af cellerne kan jeg kun antage er, hvad du selv har angivet...
Avatar billede christopher21 Juniormester
04. april 2018 - 20:46 #14
Jeg er studerende, så jeg er stadig ved at lære VBA at kende :)
Jeg har prøvet med følgende kode
Sub YYMMDD()
    Dim c As Range
 
    For Each c In Range("D2:D" & Cells(Rows.Count, "D").End(xlUp).Row)
        c.Value = DateSerial(Left$(c.Value, 2), Mid$(c.Value, 4, 2), Right$(c.Value, 2))
        c.NumberFormat = "dd-mm-yyyy"
    Next
   
End Sub

Resultatet i excel ender med at blive m-d-yyyy og ikke dd-mm-yyyy :(

Og jeg kan kun eksekvere den én gang anden gang får jeg en run time error.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester