Hej eksperter. Jeg har et problem med VBA jeg ikke kan løse. Jeg har opgivet dato som tekst i fomat yymmdd. Og ønsker at konvertere dette til ddmmyyyy (dansk format). Hvordan får jeg lavet et system der kan tage fra første entry til sidste entry fra d2 til sidste entry) og konvertere det til en ny søjle (e2 og ned til sidste). Systemet skal kunne køre kunne håndtere der bliver tilføjet datoer gennem tiden.
Yderligere fik jeg ikke skrevet at systemet selfølgelig skal kunne tjekke om datoen til at starte med i d2 og ned er "forkert" format og derfor skal konvertere det.
Pisse fedt! Det virker næsten. nu konvertere systemet til datoer men ikke alle steder. Der kommer lange sekvenser hvor den ikke konvertere noget som helst. og efter den sidste aktive celle der står noget i så skriver den bare 00-00-00 derned ad.
Det giver ikke mening. VBAen tæller hvormange celler med indhold der er i kolonne D og tager derefter række for række fra 1 til det tal den når til og arbejder igennem. Det er klart hvis der er tomt i enkelte celler i D så vil den skrive 00-00-00. Du bliver nødt til at uploade det et sted for at vi kan fejlsøge - det virker fint hos mig.
suben viser ingen fejl. dog kan jeg konstatere der er en fejl et sted eftersom når den bliver eksekveret gør den det ikke for alt plus den fortsætter med 00-00-00. 04-03-15 11-09-01 15-09-01 16-02-01 17-09-01 17-09-01 17-02-01 16-09-01 10-09-01 17-09-01 13-09-01 16-09-01 15-09-01 17-09-01 15-02-01 14-09-01 16-09-01 17-09-01 16-09-01 16-09-01 01-09-2016 16-09-01 01-09-2016 17-09-01 01-09-2017 15-09-01 01-09-2015 16-09-01 01-09-2016 15-09-01 01-09-2015 17-09-01 01-09-2017 16-09-01 01-09-2016 15-09-01 01-09-2015 16-09-01 17-09-01
Hvad kender du til vba? Kan du prøve at løbe den igennem via F8 og se hvilket tal den tæller til intNumRows?
Du kan også vælge i immidiate og skrive ?Range("D1", Range("D1").End(xlDown)).Rows.Count og så se hvad den skriver.
Derudover er det meget mystisk at den efterlader noget tomt, men jeg bemærker nu at du skriver D som YY-MM-DD og ikke YYMMDD som du skrev i første indlæg. Det ændrer jo på den måde jeg har skrevet hvordan den skal fange hver del på.
Ved at skrive Range("D1", Range("D1").End(xlDown)).Rows.Count I immidiate vinduet skriver den: "Der opstod en kompileringsfejl: Brugen af egenskaben er ugyldig"
Så langt så godt. Derfor skulle den også arbejde ned til bund. Udfordringen er så denne del: Derudover er det meget mystisk at den efterlader noget tomt, men jeg bemærker nu at du skriver D som YY-MM-DD og ikke YYMMDD som du skrev i første indlæg. Det ændrer jo på den måde jeg har skrevet hvordan den skal fange hver del på.
Jeg tror som sagt det vil være nemmest hvis du kan anonymisere data og sende mig et eksempel. Skriv evt. din mail i en besked så kan vi tage den der.
Den her læser tal i D kolonnen og sætter dem ind i E.
Kan du prøve at "steppe" i makroen? F8 bruger man, så tager den en linje ad gangen og du kan læse hvilke variabler den bruger, herunder hvordan datDato ser ud og om den fanger intNumRows. Fortæl os hvad de to værdier er når du stepper.
Så det er datoen den er galt med. Har du kolonne overskrifter? Måske den ikke skal starte med intRow = 1, men 2? Det kan også være at dine data i kolonne D har et format der ikke matcher hvad vbaen er sat op til. Prøv at vise starten af kolonne D - bare de første 5-7 rækker.
Ja, for den forstår ikke dit input - dine data ser ikke ud til at være registreret som datoer.
Du skal ud i en anden løsning a la denne (utestet) Range("E" & intRow).Value = Format(Right(DatDato, 2) & "-" & Mid(DatDato, 4,2) & "-" & Left(DatDato, 2), "DD-MM-YYYY")
Jeg ved ikke hvordan dine oprindelige data vender, så det kan være det skal vende omvendt - er du med på hvad der sker?
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.