Formatera datum med ’rätt’ formatsträng

När datumsträngar ska användas i accessprogram är det många gånger viktigt att rätt formatsträng användas. Speciellt om programmet ska användas i olika länder. Då kan man inte använda ”svenska” formatering: Format(dat, "yyyy-mm-dd")
Istället kan man använda nedanstående funktion för att ta reda på vilken formatsträng som ska användas, anropet ser då ut så här: Format(dat, datumFmt())

OBS! Med hjälp av denna funktion kommer datum automatiskt få samma datumformat som datorn använder för datum. Om programmet används på en dator med finska inställningar kommer datumen visas med finska formatet 31.11.2019 istället för 2019-11-31

' Ruturnerar en formatsträng
' som tex kan användas till funktionen Format()
' Exempel på svar:
' 1) "yyyy-mm-dd" om svenskt  datumformat används
' 2) "d.m.yyyy"   om finskt   datumformat används
' 3) "dd-mm-yyyy" om spanskt  datumformat används
' 4) "m/d/yyyy"   om USAs     datumformat används
' 5) "dd/mm/yyyy" om Engelskt datumformat används

Function datumFmt()
    Dim Dat$, ch$, fmt$
    Dat = CStr(DateSerial(2012, 1, 9))
    If InStr(Dat, "-") Then ch = "-": Dat = Replace(Dat, "-", "-")
    If InStr(Dat, ".") Then ch = ".": Dat = Replace(Dat, ".", "-")
    If InStr(Dat, "/") Then ch = "/": Dat = Replace(Dat, "/", "-")
    Select Case Dat
        Case "2012-01-09": fmt = "yyyy-mm-dd"   ' Sverige,Polen
        Case "2012-09-01": fmt = "yyyy-dd-mm"   '
        Case "2012-1-9":   fmt = "yyyy-m-d"   '
        Case "2012-9-1":   fmt = "yyyy-d-m"   '
        Case "09-01-2012": fmt = "dd-mm-yyyy"   ' Spanien
        Case "01-09-2012": fmt = "mm-dd-yyyy"   ' Österrike
        Case "9-1-2012":   fmt = "d-m-yyyy"      ' Finland
        Case "1-9-2012":   fmt = "m-d-yyyy"      ' Usa
        Case Else: MsgBox "Okänt datumformat.": Stop
    End Select
    datumFmt = Replace(fmt, "-", ch)
End Function