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:
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.
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.