29-06-1998 - 31-12-1998
eller
01-08-1997 - 31-05-2000
- kun behøver at taste de 16 tal, altså ikke nogle bindestreger eller
evt. punktummer. Jeg skal ikke kunne regne på disse tal, men vil gerne
spares for at skulle taste mellemrum og bindestreger.
Jeg kan dog ikke få lavet et brugerdefineret format der helt virker
efter hensigten dvs tager foranstående nuller med og skriver årstallet i
"til datoen" rigtigt. Den laver fx 1998 om til 1990 og år 2002 om til år
2000
Jeg er ikke helt skrap til excel, så jeg vil blive meget glad hvis der
er nogen der kunne give mig en detaljeret løsning.
Med venlig hilsen
Jannie Green
Jannie Green <j...@uka.stam.dk> skrev i en
nyhedsmeddelelse:382161FB...@uka.stam.dk...
> Jeg har et problem i excel 97. Jeg vil gerne oprette et brugerdefineret
> format, som gør at jeg ved indtastning af fx.
>
> 29-06-1998 - 31-12-1998
> eller
> 01-08-1997 - 31-05-2000
>
> - kun behøver at taste de 16 tal, altså ikke nogle bindestreger eller
> evt. punktummer. Jeg skal ikke kunne regne på disse tal, men vil gerne
> spares for at skulle taste mellemrum og bindestreger.
>
> Jeg kan dog ikke få lavet et brugerdefineret format der helt virker
> efter hensigten dvs tager foranstående nuller med og skriver årstallet i
> "til datoen" rigtigt. Den laver fx 1998 om til 1990 og år 2002 om til år
> 2000
Prøv med følgende brugerdefinerede format, men husk at indtaste alle 16
cifre, også der hvor første ciffer i dato og/eller måned er 0.
0#-##-#### - 0#-##-#### Det burde virke uden problemer både med
foranstillede 0'er og uden at ændre årstallet.
Hilsen
Jan
29-06-1998 - 31-12-1998
vil den lave det sidste ottetal om til et 0, det vil sige der kommer til at
stå 1990 til slut..
Hvorfor den gør det er en gåde for mig og flere af mine kollegaer.
venlig hilsen
Jannie
Jan Kronsell skrev:
>Tak for hjælpen Jan,
>men koden duer desværre ikke jeg har selv før prøvet med denne. Hvis man med
>denne kode indtaster visse datoer som den nævnte:
>
>29-06-1998 - 31-12-1998
>
>vil den lave det sidste ottetal om til et 0, det vil sige der kommer til at
>stå 1990 til slut..
>Hvorfor den gør det er en gåde for mig og flere af mine kollegaer.
Jeg ved det heller ikke og der sker det samme hos mig i Excel97 og
også i den "gamle" Excel 5.0.
Men sålænge du holder dig indenfor -------->1999 kan du lave en
nødløsning:
0#-##-19## - 0#-##-19##
og datoerne skal så indtastes uden "19" : 290698311298
så virker det.
Håber du får problemet løst inden årsskiftet, for da går det helt
bananas.
Preben
ved e-mail fjern xxxx
PS. Måske har Leo også en løsning på dette problem?
Jeg kan desværre godt se, at du har ret. Den kode jeg brugte virker
upåklageligt, men kun hvis det allerførste ciffer der tastes er et 0.
Jeg håber, at du får held med din fortsatte søgning.
Hilsen
Jan
Hvad menes der med at det går bananas ved årsskiftet?
Jeg har desværre ikke fået løst problemet endnu, så hvis der er nogle der kan
hjælpe mig er de yderst velkomne
venlig hilsen
Jannie Green
Preben Kaas skrev:
> On Thu, 04 Nov 1999 14:59:02 +0100, Jannie Green <j...@uka.stam.dk>
> wrote:
>
> >Tak for hjælpen Jan,
> >men koden duer desværre ikke jeg har selv før prøvet med denne. Hvis man med
> >denne kode indtaster visse datoer som den nævnte:
> >
> >29-06-1998 - 31-12-1998
> >
> >vil den lave det sidste ottetal om til et 0, det vil sige der kommer til at
> >stå 1990 til slut..
> >Hvorfor den gør det er en gåde for mig og flere af mine kollegaer.
>
Du er desværre løbet ind i en af begrænsningerne i Excel.
Excel kan kun arbejde med 15 betydende cifre, hvilket betyder, at tallet
2906199831121998 (for 29-06-1998 - 31-12-1998)
bliver lagret som 2906199831121990 (kun de første 15 cifre kommer med. Er der yderligere
cifre vil de blive erstattet af nuller.) og derfor vises som 29-06-1998 - 31-12-1990
hvorimod tallet
0306199831121998 (for 03-06-1998 - 31-12-1998)
vil kunne bruges, da Excel fjerner foranstillede nuller og altså lagrer tallet som
306199831121998
med formatet 0#-0#-#### - 0#-0#-#### vil resultatet blive 03-06-1998 - 31-12-1998
men der opstår som sagt fejl, når første ciffer er forskellig fra nul.
Der kan laves en løsning i VBA.
Hvis det er et "fast" område fx en hel kolonne (række),der bruges til indtastningen,
kan man lave en automatisk konvertering med hændelsen "Change".
Hvis det er celler, der er spredt rundt i regnearket, vil det sandsynligvis være det
letteste at lave en konverteringsrutine og så køre den fra en brugeroprettet knap,
når man står i den pågældende celle.
Hvis du får brug for hjælp til en VBA løsning, er du velkommen til at maile til gruppen.
Med venlig hilsen
LeoH
Jannie Green skrev i meddelelsen <382161FB...@uka.stam.dk>...
>Jeg har et problem i excel 97. Jeg vil gerne oprette et brugerdefineret
>format, som gør at jeg ved indtastning af fx.
>
>29-06-1998 - 31-12-1998
>eller
>01-08-1997 - 31-05-2000
>
>- kun behøver at taste de 16 tal, altså ikke nogle bindestreger eller
>evt. punktummer. Jeg skal ikke kunne regne på disse tal, men vil gerne
>spares for at skulle taste mellemrum og bindestreger.
>
>Jeg kan dog ikke få lavet et brugerdefineret format der helt virker
>efter hensigten dvs tager foranstående nuller med og skriver årstallet i
>"til datoen" rigtigt. Den laver fx 1998 om til 1990 og år 2002 om til år
>2000
>
Jeg bliver meget glad for en detaljeret "brugsanvisning" i hvad jeg skal gøre.
Venlig hilsen Jannie
Leo Heuser skrev:
>Også tak for hjælpen fra dig Preben, problemet er dog, at jeg skal bruge datoer
>fra 1994 til 2002.
>
>Hvad menes der med at det går bananas ved årsskiftet?
Kun det, at hvis du bruger formaterne
0#-##-#### - 0#-##-#### eller 0#-##-19## - 20##
og så taster .......2000 eller ......00
så får du de mest mærkværdige datoløsninger.
For at løsningen skal fungere, er det nødvendigt, at du indtaster "datotallet" som tekst.
Dette gøres ved at bruge en enkelt apostrof som *første* tegn (apostrof findes på
tasten til højre for Ø). Skulle du glemme apostroffen, kommer der en "husker".
2906199831121998 skal altså indtastes som '2906199831121998
1. Stå i det ark, det drejer sig om.
2. Højreklik på arkfanen (der hvor arknavnet står (fx Ark1)) og vælg "Vis programkode"
3. Kopiér nedenstående kode og sæt den ind i det vindue, der er fremkommet.
4. Koden virker på kolonne B, så er det en anden kolonne hos dig, skriver du
kolonnenavnet i denne linie i stedet for "B":
Set DatoRange = ActiveSheet.Columns("B")
5. Gå tilbage til regnearket med fx <Alt><F11> og gem det.
6. Prøv efter ved at indtaste et datotal i den aktuelle kolonne.
Hvis der opstår problemer, er du velkommen til at maile mig direkte.
Med venlig hilsen
LeoH
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim GemDato As Variant
Dim DatoRange As Range
Dim Dummy As Variant
Set DatoRange = ActiveSheet.Columns("B")
On Error GoTo Finito
If Not Intersect(Target, DatoRange) Is Nothing Then
GemDato = Target.Value
If TypeName(GemDato) <> "String" And GemDato <> "" Then
MsgBox "Husk enkelt apostrof som første tegn."
Target.ClearContents
Else
Application.EnableEvents = False
Target.Value = Format(GemDato, "@@-@@-@@@@ - @@-@@-@@@@")
End If
End If
Finito:
Application.EnableEvents = True
Set DatoRange = Nothing
End Sub
----------------------------------------------------------
Jannie Green skrev i meddelelsen <3822C227...@uka.stam.dk>...