Datum omzetten naar zelfde formaat

Status
Niet open voor verdere reacties.

Killerclown

Gebruiker
Lid geworden
30 dec 2007
Berichten
181
Help!

Via een formulier kan men een datum invullen. Na het indrukken van de knop "Invoeren" wordt alles in cellen in Excel gezet.
Nu wil ik de datum steeds in het zelfde formaat (dd-mm-yyyy) ongeacht hetgeen men invult.
Ik heb volgend stukje code:

Code:
If TxtDatum.Value = "dd-mm-jjjj" Then
        MsgBox "Gelieve een datum in te vullen."
        Exit Sub
If TxtDatum.Value = "" Then
        MsgBox "Gelieve een datum in te vullen."
        Exit Sub
    Else
        If IsDate(TxtDatum.Value) Then
        TxtDatum.Value = Format(TxtDatum.Value, "dd-mm-yyyy")
    Else
    Cancel = True
    End If
    End If
    End If

Cells(emptyRow, 2).Value = TxtDatum.Value

De datum wordt mooi ingevuld maar niet in het formaat dat ik wil.
Dus als iemand vb 01/01/2012 invult, dan verschijnt dit ook zo en ik wil dit omzetten naar 01-01-2012.

Ziet iemand wat ik fout doe? Want ik zie het niet :-s

Dank bij voorbaat.
 
Format(TxtDatum.Value, "dd-mm-yyyy")
Maak van de yyyy eens jjjj.
 
Maak de cel waarin de datum (een getal dus) weggeschreven wordt op in de gewenste datumopmaak.
 
PS Ik krijg een foutmelding bij txtDatum.value (txtDatum ingevoerd via txtDatum = Inputbox("Voer datum in") en gedeclareerd als Variant). Hoe krijg jij dat voor elkaar dat je de txtDatum.value kan doen? Hier stukje code om e.e.a. te testen:
Code:
Sub datumtest()

Dim inVal

inVal = InputBox("geef datum")
Do Until inVal = "x"
    If IsDate(inVal) Then datum = DateValue(inVal)
    
    With ActiveCell
        .Offset(0, 0) = "'" & inVal    ' Precies wat je ingetikt hebt
'        .Offset(0,1) = inVal.value   ' Geeft foutmelding
        .Offset(0, 1) = Format(datum, "dd-mm-yy")  'dit werkt niet goed, ik heb Engelse versie en draait (soms) in cel de dag en mnd om
        .Offset(0, 2) = datum  ' met juiste celopmaak krijg ik juiste datumweergave
    End With
    ActiveCell.Offset(1, 0).Select
    inVal = InputBox("geef datum")
Loop
End Sub
 
Alvast dank voor wat reacties.

De opmaak van de cel waar de datum in komt te staan wijzigen naar mijn formaat, lukt niet. De datum blijft gewoon in de opmaak zoals die in het formulierveld stond.

Raar dat je een foutmelding krijgt. Bij mij werkt het perfect.

Dit is de volledige sub (of plaats ik het volledige bestand hier eens?)
Beetje ingekort omdat het formulier veel velden bevat en veel cellen invult, maar de belangrijkste staat er: de datum

Code:
Private Sub cmdAfgehandeld_Click()

If TxtDatum.Value = "" Then
        MsgBox "Gelieve een datum in te vullen."
        Exit Sub
    Else
        If IsDate(TxtDatum.Value) Then
        TxtDatum.Value = Format(TxtDatum.Value, "dd-mm-yyyy")
    Else
    Cancel = True
    End If
    End If
    End If

If Me.TxtDatum.Value = "" Then
answer = MsgBox("U dient een datum in te vullen.", vbExclamation, "Opmerking!")
TxtDatum.SetFocus
Exit Sub
End If

Sheets(1).Activate
emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1

Cells(emptyRow, 2).Value = TxtDatum.Value

Call FrmKlachten_Initialize
ActiveWorkbook.Save
Unload Me
Application Quit

End Sub

Iemand nog een idee? :)

Alvast dank.
 
Ik zou zeggen: doe het bestandje erbij; dat kijkt voor ons niet alleen makkelijker, het scheelt ons ook enorm veel tijd om de situatie na te bootsen. Tijd die ik liever in de oplossing steek :)
 
Als de datum in de cel er hetzelfde uitziet zoals op het formulier is ingevuld, én als je door celopmaak het format niet kan wijzigen, dan denk ik dat de cel een string bevat en geen getal. Je moet ervoor zorgen dat de macro de ingevoerde string op correcte wijze converteert naar een (datum)getal. Als je dat getal hebt, kun je er alles mee doen (dagen optellen, aftrekken, uiterlijk opmaken etc.)
 
hey killer down,

Ik heb ooit eens dit probleem ook gehad tijdens het invullen v/e dialoog.
Daar vulde ik een datum in en deze werd altijd op de amerikaanse manier ingevuld. (MM/DD/YYYY)
Ook al had ik de cel opmaak op dd/mm/jjjj staan het werd automatisch teruggezet nadat het dialoog was ingevuld en alles op zijn plek werd gezet. Door local toe te voegen zoals hier onder staat was mijn probleem opgelost.
Hopelijk werkt het voor jouw macro ook.

Succes Frank
ActiveCell.FormulaR1C1Local
 
Probeer dit eens
De regel: TxtDatum = Format(TxtDatum, "dd-mm-yyyy") eruit halen en
De regel: Cells(emptyRow, 2) = TxtDatum.Value wijzigen in: Cells(emptyRow, 2) = TxtDatum
 
Gebruik.....
Code:
Cells(emptyRow, 2).Value = DateValue(TxtDatum)
.....voor het omzetten van USA naar NL.
Is het NL.....blijft het NL.
 
Alvast dank voor de vele reaties. Mijn excuses dat mijn antwoord even op zich liet wachten.
(problemen met office 2010 en VBA)

De combinatie van Daan108 en HSV gaf het juiste resultaat.

De regel: TxtDatum = Format(TxtDatum, "dd-mm-yyyy") eruit halen
De regel: Cells(emptyRow, 2) = TxtDatum.Value gewijzigd in: Cells(emptyRow, 2) = DateValue(TxtDatum)

De datum wordt nu omgezet naar dd-mm-yyyy.

Duizendmaal dank!!!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan