Datum bij onvoorspelbare invoer

Status
Niet open voor verdere reacties.

koster1984

Gebruiker
Lid geworden
4 jul 2012
Berichten
337
Hallo,

Ik ben bezig een declaratieformulier te maken voor freelancers waarbij ik tegen een probleem aanloop bij de invoer van een datum.

Ik heb bij de invoer van een datum een stukje code gemaakt voor het automatisch bepalen van het btw percentage (bij een datum vóór 1-10-2012 is dat 19% en daarna 21%), maar door de onvoorspelbare invoer van data door deze freelancers wordt deze af en toe als tekst ingevoerd, bijv. 14032013 of 14.03.2013, wat in sommige gevallen alsnog als een datumcode wordt gezien en soms als tekst. Dus soms komt er een malle datum ver in de toekomst of soms kan ie er niks van maken en komt het als een tekst of getal waarbij de code gebaseerd op de datum vast komt te lopen.

Ik heb even een simpel stukje code geschreven (puur en alleen met invoer van data zonder verdere codes eromheen voor het bepalen van percentages), wat het probleem enigszins verhelpt, met een voorbeeldbestandje om het probleem te illustreren, echter werkt deze wat te omslachtig en voorzie ik nog steeds problemen:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [D5:D24]) Is Nothing Then
On Error GoTo fout
    If Target = "" Then Exit Sub
fout:
    Target.NumberFormat = "m/d/yyyy"
    If Not IsDate(Target) Then
        Target.NumberFormat = "@"
    End If
    If IsDate(Target) Then
        Target.NumberFormat = "m/d/yyyy"
        If Year(Target) > Year(Now) + 3 Or Year(Target) < Year(Now) - 3 Then
            Target.Select
            MsgBox "U heeft geen geldige datum ingevoerd (gebruik: DD-MM-JJJJ), probeer opnieuw", , "Datum"
            Target.ClearContents
        End If
    End If
End If
End Sub

Heeft iemand misschien een suggestie om hier wat beters van te maken? Want eigenlijk zou het beste zijn om er hoe dan ook een datum van te maken of op een of andere manier de invoer dusdanig te beperken.
 

Bijlagen

Daniel,

Simpel, dwing een goede datum af door gebruik te maken van gegevensvalidatie waardoor in
een cel alleen een datum binnen een bepaald bereik is toegestaan. Een VBA code is binnen Excel niet nodig.

Veel Succes.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan