donderdag, december 07, 2017

Excel, datumformaat vs taalinstelling (yyyy, jjjj)

In Excel is het mogelijk om bijvoorbeeld cellen die datums bevatten, met behulp van de formule =TEKST(<datum>;<datumformaat>)in het gewenste formaat op het scherm te tonen. Bij het opgeven van het datumformaat kun je tegen problemen aanlopen als deze afwijken van de taalinstellingen (internationale instellingen van Windows). Dit probleem is echter goed te omzeilen met de VBA-functie Application.International()
Als voorbeeld vullen we cel A1 met de datum 31-12-2014. In cel A2 vullen de formule =TEKST($A$1;"yyyy-mm-dd"). Het formaat staat tussen dubbele quotes "" en zal op een computer met Nederlandse taalinstellingen niet werken. Op een computer met Nederlandse taalinstellingen zal de formule in A2 het resultaat yyyy-12-31 teruggeven. Met behulp van User Defined Functions (UDF), kan uitkomst worden geboden. Definieer in VBA (Module) de volgende functies:

Function Jaarformaat() As String
' Deze procedure is in het leven geroepen om de jaaraanduiding in het datumformaat
' afhankelijk te laten zijn van de internationale instellingen
' Hierbij wordt gebruik gemaakt van Application.International kenmerken
  Jaarformaat = String(4, CStr(Application.International(19)))
End Function
Function Uurformaat() As String
' Deze procedure is in het leven geroepen om de uuraanduiding in het datumformaat
' afhankelijk te laten zijn van de internationale instellingen
' Hierbij wordt gebruik gemaakt van Application.International kenmerken
  Uurformaat = String(2, CStr(Application.International(22)))
End Function

 Met behulp van bovenstaande functies is het mogelijk om de verschillen in formaataanduiding in uren ("hh" - "uu") en jaren ("yyyy" - "jjjj" ) op te vangen. De betreffende functionaliteit is natuurlijk ook voor andere taalinstellingen te gebruiken. De gedefinieerde UDF Jaarformaat (en Uurformaat) kan in de =TEKST formule worden gebruikt. (=TEKST(A1;Jaarformaat()&"-mm-dd")). 
Op deze manier is het bovenstaande probleem met betrekking tot de verschillende afkortingen in datumformaat per taal op te lossen.


Geen opmerkingen: