webForumDet fria alternativet

Data verifiering ang. Datum i excel??

2 svar · 1 291 visningar · startad av floppy

floppyMedlem sedan juli 20082 inlägg
#1

Jag ska i en cell i Excel mata in ett datum av typen åå-mm-dd. I cellen ska det endast gå att skriva ett sådant datum, annars ska en varningsskylt komma upp (eller liknande). Genom "data verifiering" har jag löst liknande problem där cellen max fick innehålla ett visst antal tecken. Men kan hitta hur man ser till att cellen endast kan se ut på ett visst sätt, eller möjligen två alternativ...

NÅGON SOM KAN HJÄLPA MIG????

MindreVetandeMedlem sedan okt. 2005362 inlägg
#2

Det är inte så himla lätt.
Tyvärr kan du inte kolla själva inmatningsvärdet med valideringsformel. Om du skriver in ett datum, typ "2008-07-08" så ser inte valideringsfunktionen textsträngen "2008-07-08" utan datumvärdet (39637) som excel automagiskt har omvandlat datumet till. Men du kan naturligtvis göra en del kontroller ändå.
Det absolut enklaste är nog att använda "datum" i verifieringen:
Öppna dataverifieringen, i "tillåt" väljer du datum och så skriver du in ett lämpligt start och slutdatum. Långt ifrån vattentätt, men rätt bra. Du styr inte formatet men folk kan bara mata in sådan som kan tolkas som ett datum inom det intervallet du valt. Exempel på felaktiga inmatningar som kommer att accepteras:
38473
1-5
4/4
osv osv.

En annan variant är att lite bakvänt kolla om det som visas verkligen är ett datum enligt giltigt format. Dvs du ändrar till "anpassat" och skriver in en formel, typ:
=DATUMVÄRDE(TEXT(A1;"ÅÅ-MM-DD"))
Hmmm, det där ger ju samma problem som ovanstående. Glöm det

I teorin borde det gå att använda =CELL("format";A1) också. Men den verkar inte fungerar riktigt på svenska.

Sammantaget verkar det inte vara så lätt. Du kan naturligtvis använda någon active-x kontroll och koppla till cellen. Men det blir ju lite krångligt.
Visa->verktygsfällt->kontroller
längst ner till höger finns knappen "fler kontroller"
Där kan du välja något lämpligt, typ "date and time picker", "Calendar" eller vad du nu har tillgängligt. Rita upp den på lämpligt stället. Högerklicka och välj egenskaper. Där kan du koppla den till en cell med hjälp av "linked cell" eller liknande (skriv helst hela sökvägen, typ: =[Bok1]Blad1!$B$4). Avsluta designläget genom att klicka på översta vänstra knappen på verktygsfältet "fler kontroller".
Tyvärr skickar vissa kontroller textvärdet när du kopplar på det sättet. En annan variant är att använda VBA. Aktivera designläget igen ("fler kontroller"->designläge). Koppla bort/töm "linked cell" i egenskaper. Högerklicka på kontrollen och välj "visa kod" . Där kan du skriva någonting i stil med:

Private Sub Calendar1_Click()
ActiveWorkbook.Worksheets("blad1").Range("A1").Value = CDate(Calendar1.Value)
End Sub
Ja, du kan leka runt lite hur du vill. Men någon lösning som gör exakt det du vill är svårt att få till. Om du inte vill köra Excels händelsehantering. Och det tror jag inte att du vill.

floppyMedlem sedan juli 20082 inlägg
#3

tack så mycket, jag ska försöka göra på det sättet. Dock verkar det vara lite svårare än vad jag trodde...

Genererad på 373 ms · cache AV · v20260730165559-full.f96bc7eb