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

Controle Nederlandse datum notatie

Status
Niet open voor verdere reacties.

Gerard2348

Gebruiker
Lid geworden
24 okt 2013
Berichten
370
Beste forumleden,

Ik dacht dat ik het had gevonden maar niets is minder waar. Veel gebruikers werken op veel pc's. de zgn. flexwerk pc's. Deze pc's hebben helaas niet allemaal dezelfde instellingen voor iedere gebruiker. De ene staat pc staat qua instelling op (region & language) Engels de andere op Nederlands.

Nu had ik een formule gevonden (zie bijlage) om te controleren op datumnotatie. Helaas werkt deze niet zo als ik wil. De macro moet controleren of er sprake is van een Nederlandse instelling. Dit gaat volgens mij goed bij bv 10-oktober 2015 enz. maar bij 01 december 2015 niet. Het zal ongetwijfeld een simpele aanpassing in de formule zijn. Maar helaas ik kom er niet uit. De macro heb ik aangepast. In het werkelijke bestand controleert hij bij het openen van het bestand.

m.a.w. controle op notatie van de datum in het Nederlands dd-mm-jjjj.

Wie o wie?

b.v.d. Geer.
 

Bijlagen

  • datumchecker.xlsm
    16,5 KB · Weergaven: 38
Laatst bewerkt:
Als je de taalinstelling wilt weten, dan kun je beter gebruik maken van Application.International(xlCountryCode)
Dit levert 31 op voor Nederlands.
 
Zo dan?
Code:
myDate = CDate([A1])
 
Goedemorgen,

Heb beide geprobeerd. Maar helaas.

De oplossing van MarcelBeug
Code:
Application.International(xlCountryCode)
levert bij het testen altijd een 31 op.

Code:
Sub test()
 Dim excel_view As Long
 excel_view = Application.International(xlCountryCode)
 Cells(2, 4) = excel_view
 End Sub

De oplossing van HSV
Code:
myDate = CDate([A1])
levert weliswaar nu wel een ok op bij 01-01-2015 (dd-mm-yyyy) maar ook als region & language in het engels staan dus datumnotatie 01/01/2015 of 1.1.2015 enz.

Wat ik wil dat er een ok wordt gegeven alleen als de notatie voldoet aan de notatie 01-01-2015 dus dd-mm-yyyy.
 
Laatst bewerkt:
ik ben nog niet zo thuis in jouw datum problemen.
kun je een bestandje sturen en daarin voorbeelden met goede en foute antwoorden?
 
Beter?

Code:
Sub DateCheck()
Dim myDateCheck As Boolean
  myDateCheck = [a1].NumberFormatLocal = "dd-mm-jjjj"
  MsgBox myDateCheck
End Sub
 
Sylvester Ponten

onderstaande notaties zijn goed;

donderdag 1 januari 2015
2-1-2015
3-01-15
4-jan-15
5 januari 2015

Deze notaties niet;
Thursday, January 1, 2015
1/2/2015
3/01/15
4/jan/15
5 januari 2015

In een bestandje gaat niet. Het gaat er om dat sommige gebruikers hun instellingen in windows (configuratiescherm, Klok,taal en land/regio) land/regio op een andere instelling hebben staan dan Nederlands.
Wanneer dit het geval is dan moet er een waarschuwing komen. Zodat zij de instellingen veranderen naar het Nederlands. Dit heeft te maken met diverse datums zoals leveringsdatums, geboortedatums e.d.
Dus bij de ene gebruiker is mr. voorbeeld geboren op 2 januari 1998

mr. voorbeeld 02-01-2015

en bij de andere gebruiker is dit;

mr. voorbeeld 01/02/2015 (Engelse cq Amerikaanse notatie)

beide zijn dezelfde personen. Maar in het systeem 2 verschillende
 
Verander de 'MyDateCheck' eens in mijn vorig schrijven.
Code:
myDateCheck = InStr("d-m-jjjj|d-mm-jjjj|dd-mm-jjjj|d-mmm-jjjj|dd-mmmm-jjjj|d-mmmm-jj|d-mmm-jj|", [a1].NumberFormatLocal & "|") > 0
 
De windows landinstelling kun je opvragen met application.International(xlCountrySetting)

Voor de volledigheid nog de opmerking dat als je de datums apart houdt en formatteert als datum, dan is er maar 1 mr. voorbeeld met geboortedatum 2 jan 1998, hoe dat veld er ook uitziet. Intern is dat 35797.
 
mr. voorbeeld 02-01-2015

en bij de andere gebruiker is dit;

mr. voorbeeld 01/02/2015 (Engelse cq Amerikaanse notatie)

beide zijn dezelfde personen. Maar in het systeem 2 verschillende
laat een macro de notatie veranderen zodat da maand in tekst zichtbaar wordt.
 
Ik wil iedereen hartelijk danken voor de geleverde bijdrage.
Ik denk dat ik met de oplossing van HSV bereik wat ik wil.
Ga het uitvoerig testen.

Groet Geer
 
Misschien werkt onderstaande ook.
Code:
myDateCheck = InStr([a1].NumberFormatLocal, "-") > 0
 
Sorry Harry maar ik had nog geen tijd om de laatste oplossing te testen. Deze werkt ook.
Uiteindelijk heb ik de eerste oplossing van jou gebruikt. Met een kleine aanpassing in de datumnotering.
datumnotering is als volgt;

vrijdag 01 januari 2016

controle code

Code:
Sub DateCheck()

Dim myDateCheck As Boolean
  myDateCheck = [a1].NumberFormatLocal = "dddd dd mmmm jjjj"
  MsgBox myDateCheck
End Sub

nogmaals mijn hartelijke dank. :thumb:
 
Graag gedaan en bedankt voor je reactie Geer.
Misschien kun je de vraag nog als opgelost markeren in je openingspost.
Bvd.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan