Avatar billede manutddp Nybegynder
26. marts 2014 - 11:56 Der er 5 kommentarer og
1 løsning

VBA kode til datoformat

hej

Jeg har lavet en brugerformular, hvor brugeren i et felt skal indtaste dato. Jeg vil gerne sikre at datoen overholder bestemt format.

Jeg er ret grøn i VBA, det nedenstående virker desværre ikke. Selvom datoen er skrevet korrekt kommer MsgBox frem. Hvad gør jeg forkert

Private Sub cmdGem_Click()

If Format(txtDato.Text) <> ("dd-mm-yyyy") Then
    MsgBox "Datoformat skal være dd-mm-yyyy"
    txtDato.SetFocus
    Exit Sub
End If

Unload Me

End Sub
Avatar billede claes57 Ekspert
26. marts 2014 - 12:21 #1
Det er da uvenligt. Hvorfor ikke teste på, om feltet er en dato, og så selv formatere det som ønsket.
Avatar billede manutddp Nybegynder
26. marts 2014 - 12:42 #2
Tak - Det kunne måske også være en fin ide. Kan du vise hvordan?
Avatar billede claes57 Ekspert
26. marts 2014 - 12:50 #3
prøv med
    If IsDate(txtDato.Text) Then
        txtDato.Text = Format(CDate(txtDato.Text), "dd-mm-yyyy")
    Else
        MsgBox "Fejl i dato"
        txtDato.SetFocus
        Exit Sub
    End If

jeg har ikke testet det.
Avatar billede manutddp Nybegynder
26. marts 2014 - 13:24 #4
Tak - så er jeg på rette vej. Dog er der det problem, at skriver man i formularen 01-11-2014, bliver det i mit ark (hvortil jeg returnerer data) til 11-01-2014. Den bytter altså rundt på dag og måned.

Skriver jeg istedet 31-03-2014 bliver det rigtig returneret, men denne celle bliver ikke opfattet som en Dato Celle men istedet Standard.

Sådan returnerer jeg data til et ark:
With ActiveCell
    .Value = lstMedarbejdernavn.Text
    .Offset(0, 1).Value = txtDato.Text

Kan du se hvad går galt?
Avatar billede claes57 Ekspert
26. marts 2014 - 13:48 #5
man må på en enkelt måde styre land så dato altid bruges i dk-formatet.
Det ligger udenfor mine evner - måske supertekst kan. Prøv at skrive en intern besked til http://www.eksperten.dk/profil/supertekst
med link til dette spg.
Avatar billede supertekst Ekspert
27. marts 2014 - 10:04 #6
Rem lidt justering af VBA
Dim dato As Date
Private Sub cmdGem_Click()
If IsDate(txtDato.Text) Then
        txtDato.Text = Format(CDate(txtDato.Text), "dd-mm-yyyy")
        dato = txtDato
    Else
        MsgBox "Datoformat skal være dd-mm-yyyy"
        txtDato.SetFocus
        Exit Sub
    End If


Worksheets("Tidsrapportering").Activate
Range("A2").Select
If Range("A2").Value = "" Then
    Range("A2").Activate
Else
    Range("A2").CurrentRegion.Select
    ActiveCell.Offset(Selection.Rows.Count, 0).Activate
End If
With ActiveCell
    .Value = lstMedarbejdernavn.Text
    .Offset(0, 1).Value = dato  'txtDato.Text
    .Offset(0, 2).Value = lstType.Text
    .Offset(0, 3).Value = "=VLOOKUP(RC[-3],Lister!C4:C5,2,FALSE)"
End With
   

Unload Me

End Sub
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

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