Avatar billede madiedk Nybegynder
21. marts 2008 - 22:39 Der er 12 kommentarer og
1 løsning

validering af dato i VBA

jeg har en userform i excel og noget kode i VBA

i en textbox kan man indtaste en dato i formatet "dd-mm-yyyy" og så klikke på en knap "opdater"
problemer er at hvis man skriver 24-12-2007 så virker det fint, men skriver man 12-24-2007 så acceptere den det, men gemmer det så i variablen som 12-24-2007, jeg vil gerne have den til at "fejle"
Avatar billede word-hajen Nybegynder
21. marts 2008 - 22:45 #1
vba.Format("12-24-2007", "dd-mm-yyyy")

konverterer det indtastede. Kan det gøre det eller vil du have en fejl?
Avatar billede madiedk Nybegynder
22. marts 2008 - 00:32 #2
vil gerne have en fejl, så jeg kan gøre så der kommer en msgbox op der skriver at formattet ikke er skrevet korrekt ind
Avatar billede terry Ekspert
22. marts 2008 - 08:58 #3
21/03-2008 22:45:10
what do you do if you enter?

11-12-2008 (11 December 2008)
Avatar billede word-hajen Nybegynder
22. marts 2008 - 09:30 #4
terry -> Så bliver det ved med at være 11-12-2008 (11. december 2008).
Avatar billede word-hajen Nybegynder
22. marts 2008 - 09:52 #5
Det kan tage ½ krig at tjekke datoformater, men ovenstående problem kan løses således:

********************
Public Function CorrectDate(strDate As String) As Boolean
    Dim varTemp As Variant
   
    varTemp = Split(strDate, "-")
    If varTemp(1) > 12 Then
        MsgBox "Dette er ikke korrekt datoformat. Indtast venligst som dd-mm-åååå.", vbExclamation, "Dato"
        CorrectDate = False
    Else
        CorrectDate = True
    End If
End Function
**************

Jeg har lagt en msgbox ind i funktionen, men den kan du selvfølgelig have andetsteds, hvis du foretrækker.
Avatar billede terry Ekspert
22. marts 2008 - 12:03 #6
Not if you enter it as 12-11-2008. If the user enters a date in mm-dd-yyyy format then there is no way you can be sure the date has been entered incorrectly.

You could format the date so it can be entered dd-mm-yyyy but displayed
22. marts 2008 which can help eliminate date problems.
Avatar billede terry Ekspert
22. marts 2008 - 12:04 #7
"Det kan tage ½ krig at tjekke datoformater.." I agree :o)
Avatar billede terry Ekspert
22. marts 2008 - 12:05 #8
and if it is possible in Excel I would suggest using a calender control
Avatar billede madiedk Nybegynder
22. marts 2008 - 12:05 #9
tak til begge, smid et svar word-haj, den vba kode du har skrevet er løsningen. jeg tænkte selv på at lave noget i den stil, men håbede der var en slags indbygget funktion til at tjekke det.
Avatar billede word-hajen Nybegynder
22. marts 2008 - 14:41 #10
Der er en indbygget funktion til at tjekke om noget er en dato, men 11-24-2008 ER en dato - det er så bare 24. november 2008. Det er en af årsagerne til at validering af datoer er et mareridt, medmindre man bruger en kalenderkontrol, som terry foreslår.
Avatar billede word-hajen Nybegynder
22. marts 2008 - 14:43 #11
terry -> Nu skrev du selv, at man indtastede 11-12-2008. Min første kommentar går alene på at fange, at man har tastet en "måned", der ikke eksisterer, dvs. over 12. Men ellers kender du sikkert selv til alt omkring formatering/validering af datoer.
Avatar billede madiedk Nybegynder
22. marts 2008 - 14:57 #12
hvad er en kalenderkontrol? hvordan foregår det?
Avatar billede word-hajen Nybegynder
22. marts 2008 - 16:18 #13
En kalenderkontrol viser en kalender, hvor man så kan klikke på den dato, som man ønsker at bruge. På den måde kan man komme ud over, at en bruger taster et forkert format.

Prøv at højreklikke på din Toolbox i vba. Vælg additional controls. Klik af i Calendar control. Sæt en calendar control på en form. Der findes også diverse Datepicker kontroller, der kan downloades/købes og benyttes.
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
Kurser inden for grundlæggende programmering

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