• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Datum in msgbox

Status
Niet open voor verdere reacties.

stefano

Gebruiker
Lid geworden
22 mei 2004
Berichten
865
Ik heb een msgbox gemaakt om een datum in te geven. Ik wil dat men de datum ingeeft als dd/mm/jjjj, hoe vertaal ik zoiets naar vba? ( nu test ik via lengte 10 maar dat is niet correct).


Code:
Sub nieuw()
' datum ingeven via msgbox

    Dim datum As Date
    datum = InputBox("Datum van de levering", "Geef datum in dd/mm/jjjj", "Leverdatum")
    If Len(datum) <> 10 Then
            MsgBox "Datum is niet correct, geef in als 15/01/2017 !", vbCritical, "Fout!"
        Exit Sub
    Else
        With Sheets("historiek")
            .Range("a2").Value = datum
        End With
    End If
   
    Sheets("historiek").Select
        Range("a2").Value = charge
 
deze schreef Harry vorige week voor mij. Kan je wel aanpassen denk ik.

Stond bij mij in TB2_afterupdate.

Code:
Dim LastRow As Long, ws As Worksheet, InvoerCheck As Boolean, Tweede_check As Boolean
InvoerCheck = True
Tweede_check = True
 With CreateObject("vbscript.regexp")
    .IgnoreCase = True
    .Pattern = "^[A-Z]{2}-[0-9]{7}-[0-9]$"
       InvoerCheck = .test(TB2)
    .Pattern = "^[0-9]{3}.[0-9]{3}.[0-9]{3}$"
      Tweede_check = .test(TB2)
 End With
    If InvoerCheck = False And Tweede_check = False Then
        MsgBox "Verkeerde invoer" & vbCrLf & vbCrLf & _
        "Onjuiste invoer "
        TB2.Value = ""
 
Of test dit eens:
Code:
Sub nieuw()
    Dim datum As String
    datum = InputBox("Datum van de levering", "Geef datum in dd/mm/jjjj", "Leverdatum")
    If Not IsDate(datum) Then
        MsgBox "Datum is niet correct, geef in als 15/01/2017 !", vbCritical, "Fout!"
    Else
        With Sheets("historiek")
            .Range("A2").Value = datum
            .Range("A2").NumberFormat = "dd\/mm\/yyyy"
        End With
    End If
End Sub

Zo maakt het niet uit hoe het is ingegeven maar dan is het altijd een datum en met de gewenste layout in de cel.
 
Laatst bewerkt:
Ik heb de code gebruikt maar

1. bij ingeven van een foute datum wordt ik er gewoon uitgegooid, hoe kan ik na ingeven van een foute datum terug naar de input van datum gaan ?
2. Ik heb de code aangepast maar daar gaat het ook fout, zie rode markering ( datum moet ingevuld worden op tabblad 'historiek' in cel a2)

Code:
 Dim datum As String
    Dim charge As String

    datum = InputBox("Datum van de levering", "Geef datum in dd/mm/jjjj", "Leverdatum")
    If Not IsDate(datum) Then
        MsgBox "Datum is niet correct, geef in als 15/01/2017 !", vbCritical, "Fout!"
    Else
       [COLOR="#FF0000"] With Sheets("historiek")
            .Range ("A2")[/COLOR]            
            .Value = datum
            .NumberFormat = "dd\/mm\/yyyy"
        End With
    End If
 
Laatst bewerkt:
Logisch, want er wordt maar 1x om de datum gevraagd. Je kan zoiets doen:
Code:
Sub nieuw()
    Dim datum As String
    Dim CorrectDate As Boolean
    
    While Not CorrectDate
        datum = InputBox("Datum van de levering", "Geef datum in dd/mm/jjjj", "Leverdatum")
        If datum = "" Then Exit Sub
        If Not IsDate(datum) Then
            MsgBox "Datum is niet correct, geef in als 15/01/2017 !", vbCritical, "Fout!"
        Else
            CorrectDate = True
        End If
    Wend

    With Sheets("historiek")
        .Range("A2").Value = datum
        .Range("A2").NumberFormat = "dd\/mm\/yyyy"
    End With
End Sub
 
Laatst bewerkt:
Foutief ingeven van de datum werkt en ik krijg nieuwe mogelijkheid om juiste in te voeren.

De ingevoerde datum wordt niet ingevuld in tabblad 'Historiek' in cel a2, de cel blijft blanco.
 
Dat werkt hier prima, dus plaats dan je document eens.
 
Het werkt dus wel, maar in dat document wordt op sheet Historiek de cel A2 direct overschreven met een leeg Charge nummer.
 
Nog even een 'cdate' ervoor plakken Ed.
Code:
With Sheets("historiek").Range("A2")
    .Value = [COLOR=#0000ff]CDate(datum)[/COLOR]
    .NumberFormat = "dd\/mm\/yyyy"
    End With
 
Code:
Sub M_snb()
    Do
        c00 = InputBox("Datum van de levering", "snb")
    Loop Until IsDate(c00) And Mid(c00, 4, 2) < 13

   Sheets(1).Cells(2, 1) = CDate(c00)
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan