Avatar billede brynil Nybegynder
08. november 2003 - 12:48 Der er 15 kommentarer og
1 løsning

Direkte ændring og makro giver forskellig resultat

I et regneark importeret fra Navision forekommer en dato-kolonne formateret som tekst (med foranstillet ').
Det ændrer jeg ved at multiplicere med 1 og definere kolonnen som Dato. Det fungerer fint.

Gør jeg det samme via en makro (eneste forskel er at jeg beder makroen finde det aktuelle Range, hvilket ser korrekt ud) så kan jeg se, at ikke alle celler i området ændres til en dato-værdi, og derfor ikke i næste trin formatteres korrekt som dato.
Det drejer sig omtrent om 18000 rækker.

Er der nogen der kan forklare denne forskel?
Avatar billede brynil Nybegynder
08. november 2003 - 12:49 #1
Ps! Det er i Office97.
Avatar billede jkrons Professor
08. november 2003 - 13:05 #2
Det er lidt svært at forklare, når man hverken kender data eller kode :-)

Umiddelbart bør den samme operation udført på samme type data give samme resultat overalt. Der er altså to muligheder, som jeg ser det. Enten er dine data faktisk ikke ens i udgangspunktet, eller også er din kode forkert.

Endenlig kan der selvfølgelig være en fejl i Excel.
Avatar billede kabbak Professor
08. november 2003 - 13:15 #3
Hvordan finder du det aktuelle range på datoen.

vis lidt kode ?
Avatar billede brynil Nybegynder
08. november 2003 - 13:19 #4
Jeg vælger range med en XlUp fra 65500 og placerer Row-værdien i en Long variabel. Herefter definerer jeg ranget som B2 til denne værdi!
Avatar billede jkrons Professor
08. november 2003 - 13:20 #5
Hvis du ganger med 1 i din makro, kan det godt gå galt, fordi makroen opfatter data anderledes end regenarket selv gør. Du kan evt prøve at bruge denne kode til at ændre data, når du har fundet dit range:

For Each c In ActiveSheet.Range("a1:a18000").Cells
c.Value = CDate(c.Value)
Next c

Ranget skal erstattes med det, du har fundet tidligere.
Avatar billede brynil Nybegynder
08. november 2003 - 13:20 #6
Beklager, men koden ligger på mit arbejde, men er ret simpel.
Avatar billede jkrons Professor
08. november 2003 - 13:22 #7
Prøv med mit forslag. Det virker i hvert fald hos mig, hvis datoerne står som '22-3-03 eller '5-4-08 osv.
Avatar billede brynil Nybegynder
08. november 2003 - 13:26 #8
jkrons - det lyder præcis som om det er forklaringen. Hvis udgangsværdien er '22.3.2003 eller '22.03.03, vil din metode så også fungere?
Avatar billede brynil Nybegynder
08. november 2003 - 13:26 #9
Det kan jeg selvfølgelig selv teste herhjemme, men måske du umiddelbart ved det?
Avatar billede jkrons Professor
08. november 2003 - 13:29 #10
Det vil ikke virke, da Excel ikke opfatter "." som et dato skilletegen, men som et tidsskilletegn. I så fald bliver det hele lavet om til klokkeslæt, fx 10:03:45 i stedet for 10-03-1945
Avatar billede brynil Nybegynder
08. november 2003 - 13:33 #11
Øv, det betyder vel, at jeg er nødt til at erstatte alle . med - for at det fungerer. Skal det gøres med en løkke eller er der en funktion der kan klare det og som kan køres fra en makro?
Avatar billede jkrons Professor
08. november 2003 - 13:37 #12
Prøv med denne. Den burde klare det.

For Each c In ActiveSheet.Range("a1:a3").Cells
    c.Value = c.Value
    Cells.Replace What:=".", Replacement:="-", LookAt:=xlPart, SearchOrder _
        :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
    c.Value = CDate(c.Value)
Next c
Avatar billede brynil Nybegynder
08. november 2003 - 13:38 #13
Det er bare fornemt jkrons. Tak for hjælpen!
Avatar billede jkrons Professor
08. november 2003 - 13:47 #14
Velbekomme!
Avatar billede jkrons Professor
08. november 2003 - 13:49 #15
Men der er i øvrigt mere optimalt at ændre

xlByRows til xlbyColumns
Avatar billede brynil Nybegynder
08. november 2003 - 14:21 #16
Jeg forsøger ;-)
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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