Avatar billede dsj1972 Juniormester
03. november 2009 - 11:23 Der er 18 kommentarer og
1 løsning

Hjælp til dato format i kode

Hejsa,

Jeg har haft en kode kørende hvor den hidtid har virket helt fint uden problemer men pludselig idag er den begyndt at vende om på dag og måned.

kode stumpen ser sådan ud:

ActiveSheet.Range("F3").Value = Format(Day(Date), "00") & "-" &_ Format(Month(Date), "00") & "-" & Format(Year(Date), "0000")

Og den har som sagt hidtid virket, hvad kan der lige være gået galt???

På forhånd tak!!

Mvh Dsj
Avatar billede tjacob Juniormester
03. november 2009 - 12:21 #1
Koden virker fint hos mig.
Du har ikke en forkert formatering i celle F3?

Ellers ser det ud som dine generelle sprogindstillinger er blevet amerikanske; De bruger mm dd yyyy
Avatar billede dsj1972 Juniormester
03. november 2009 - 12:31 #2
Ja koden har som sagt også virket helt upåklageligt hos mig, men pludselig idag ser jeg at den har byttet om ¨på dag og måned.

Mit første bud var umiddelbart også valg af sprog eller celle format. celle F3 er bare sat til "standard" og det har den hele tiden været.

Sprog er også sat til dansk.

Men man skulle jo umiddelbart tro at når koden har virket perfekt så ligger synderen nok i computeren et eller andet sted, måske registrerings databasen.....men jeg aner ikk hvor jeg skal lede.

For umiddelbart har computeren det rigtige datoformat....
Avatar billede tjacob Juniormester
03. november 2009 - 12:33 #3
Hov, nu prøvede jeg i et andet regneark, og der får jeg samme resultat som dig:  11-03-2009

Men hvorfor bruger du ikke bare: ActiveSheet.Range("F4").Value = Date

Det giver det korrekte resultat:  03-11-2009
Avatar billede dsj1972 Juniormester
03. november 2009 - 12:40 #4
Ja sjovt nok det prøvede jegh så også lige og det virker med Date,

Men i bund og grund er det jo det samme som i min kode blot at jeg har specificeret hvordan formatet skal forholde sig....eller har jeg misforstået det???

Men umiddelbart ja så virker det nu med = Date istedet, forstår bare ikke hvorfor det virker med den og ikk med den anden når det har virket før.

Begynder at tro at nisserne er tidligt på besøg..

Mvh dsj
Avatar billede tjacob Juniormester
03. november 2009 - 12:45 #5
Det har noget at gøre med at VBA jo arbejder i en engelsk syntaks, og åbenbart automatisk oversætter strengen til en dato værdi.

Dette kan ses ved at sætte et enkelt anførselstegn foran strengen, så vil den altid blive opfattet som tekst:

    ActiveSheet.Range("F3").Value = "'" & Format(Day(Date), "00") & "-" & _
        Format(Month(Date), "00") & "-" & Format(Year(Date), "0000")
Avatar billede dsj1972 Juniormester
03. november 2009 - 12:59 #6
Øhh, du har da sat 2 stk  anførelses tegn foran strengen, men prøvede lige og den virker da også, hvis man altså ændre celleformat til tekst ellers giver den det samme ombytning på dag og måned.

Mystisk....som sagt det har jo virket før uden problemer og jeg har ikke skiftet nogen version eller lign. eneste som måske er at sætte finger på at en eller anden åndsvag update har kunne lave ged i det, men det tror jeg nu egentlig heller ikk rigtig på.
Avatar billede dsj1972 Juniormester
03. november 2009 - 13:06 #7
Men jeg forstår det altså ikk, må være mig som har misforstået noget med det kode halløj her.

For jeg troede at man med koden:

ActiveSheet.Range("F3").Value=  Format(Day(Date), "00") etc.

Gik ind og definerede hvad format celle f3 skulle være i og hvad strengen skal bestå af.....dvs at uanset om der var formateret "standard" eller "tekst" eller lign. så ville den altid skifte det til "Dato format" for den valgte celle.

Eller er det bare noget jeg har fået galt i halsen (ikke utænkeligt er ganske ny i det her VBA halløj)
Avatar billede tjacob Juniormester
03. november 2009 - 13:16 #8
Nej, du har helt ret. Jeg havde den samme opfattelse; Det er jo for fanden det Format funktionen er til!

Det må være en Excel ting. Hvis man gør følgende, og stopper koden så har strDato den korrekte værdi:

Dim strDato As String
strDato = Format(Day(Date), "00") & "-" & _
        Format(Month(Date), "00") & "-" & Format(Year(Date), "0000")

Men i det øjeblik den skrives til cellen ændres værdien.
Avatar billede dsj1972 Juniormester
03. november 2009 - 13:41 #9
Ja det er meget meget mystisk, for så er denne "excel ting" lige kommet til på en eller anden mystisk vis, for det har som sagt virket lige efter bogen.

Og nu sidder jeg og får det lidt dårligt.

For bruger faktisk præsis det samme format kode andre steder, som dog godt nok virker, har lige tjekket....men det kan jo lige så godt gå samme vej, hvis det er noget helt 3´ede som er synderen her.

For den kode burde altså alt andet lige være efter bogen, ikk
Avatar billede dsj1972 Juniormester
03. november 2009 - 14:39 #10
Nå men det virker vist med....

ActiveSheet.Range("F3").Value = Date

Så den må jeg jo så bruge indtil jeg finder ud hvad der er galt med det andet

Men det er da  for mig at se det samme som ....

ActiveSheet.Range("F3").Value = Format(Day(Date), "00") etc.....
Avatar billede Niels_Bjarne Praktikant
03. november 2009 - 15:39 #11
Ide

Prøv at tjekke hvad der står i Kontrolpanel, Regional and Language settings, Regional options (eller hvad det nu hedder i en dansk Windows - Noget med Lande og sprogopsætning).
Avatar billede excelent Ekspert
03. november 2009 - 16:26 #12
I min Excel2003 DK VBA skal formatet altid være mm-dd-yyyy
når der skrives til arket, ændres det til formatet dd-mm-yyyy
Avatar billede dsj1972 Juniormester
03. november 2009 - 16:53 #13
Niels Bjarne,
Har tjekket regions og lande opsætning nix at hente der.

Excelent, Jeg har også excel2003.
Men det forklare jo ikk rigtig hvordan det så kan være at det har virket siden jeg lavede koden for snart 1½ år siden, og pludselig vender det om uden nogen form for ænddring.

Ud over det så virker det jo sært nok med:

ActiveSheet.Range("F3").Value = Date (uden at vende noget som helst....skulle jo også gerne benytte computerens sytem dato)

Men når jeg bruger den kode som er i start spm så vender den altså om, og det er den først begyndt på idag.
Avatar billede tjacob Juniormester
03. november 2009 - 16:56 #14
excelent>>ja, UNDTAGEN hvis den i VBA er erklæret som Date:

Dim Dato1 As Date, Dato2 As String
    Dato1 = Format(Day(Date), "00") & "-" & Format(Month(Date), "00") & "-" & Format(Year(Date), "0000")
    Dato2 = Format(Day(Date), "00") & "-" & Format(Month(Date), "00") & "-" & Format(Year(Date), "0000")
    Range("B2").Value = Dato1
    Range("B3").Value = Dato2

Giver hhv 03-11-2009 og 11-03-2009
Avatar billede bak Seniormester
03. november 2009 - 22:16 #15
format returnerer en streng, så det er sansynlig, at du har ændret cellens format fra tekst til dato og at excel derfor automatisk prøver at lave strengen om til dato.

Man kan ikke via vba-formatfunktion ændre på cellens format.
Avatar billede dsj1972 Juniormester
04. november 2009 - 07:44 #16
Hej Bak,

Ok, det troede jeg at den gjorde, for tager du eks. en celle og sørger for at den har "standard" formateret og så kører koden på det felt, og derefter kigger under cellen´s formatering vil du da se at den er ændret til dato, eller hva???

Men jeg har faktisk forsøgt at formatere celle i tekst og dato, men lige meget hvad så vender den stadig om på dag og måned.

Og det er jo stadig mystisk hvordan det så kan lade sig gøre at det har virket lige ind til nu. og det er jo ikke kun et ark jeg har den celle på men nok snare 7-8 ark nu, så det skulle da være mærkeligt hvis lige den samme celle skulle være blevet formateret om og alle andre celler i alle ark står til "standard"
Avatar billede dsj1972 Juniormester
04. november 2009 - 07:47 #17
Men nu jeg tænker over det, så er det jo selfølgelig ikke cellen man formatere men snare indholdet af cellen som formateres.

Og det er jo nok derfor man så kan se den ændring når kode køres.
Avatar billede dsj1972 Juniormester
13. december 2009 - 13:46 #18
Hov havde helt glemt denne,

Det er vist lukke tid.

Jeg brugte tjacob´s forslag,

tjacob smid lige et svar så får du point

mvh dsj
Avatar billede tjacob Juniormester
13. december 2009 - 17:54 #19
OK, -svar.
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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