Общая формула форматирования даты для английского и немецкого языков - PullRequest
1 голос
/ 25 сентября 2019

У меня есть формула в Excel для форматирования даты в указанном формате (=text(date,"dd-mm-yyyy"), файл также используется на швейцарском языке, а их системная дата установлена ​​на немецком языке (швейцарский). Поэтому он не отображается правильно. Как это сделать вФормула?

Я не хочу форматировать ячейку. Мне нужно это в формуле.

=text(date,"dd-mm-yyyy")

Файл будет использоваться обоими пользователями (английским и немецким). Нужна формула с запятойдля этого. а также как сделать то же самое в vba. я использовал

format$(date,"dd-mm-yyyy")

для английского языка.

1 Ответ

0 голосов
/ 25 сентября 2019

'Код адаптирован из http://www.vbforums.com/showthread.php?33984-How-to-GET-the-system-date-format-from-regional-settings

Опция Явная

Private Declare PtrSafe Function GetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String, ByVal cchData As Long) As Long
Private Const LOCALE_USER_DEFAULT = &H400
Private Const LOCALE_SSHORTDATE = &H1F ' short date format string
Private Const LOCALE_SLONGDATE = &H20 ' long date format string

Function LocaleString()
    Dim strLocale As String
    Dim lngRet As Long
    Dim strMsg As String

    'Get short date format
    strLocale = Space(255)
    lngRet = GetLocaleInfo(LOCALE_USER_DEFAULT, LOCALE_SSHORTDATE, strLocale, Len(strLocale))
    strLocale = Left(strLocale, lngRet - 1)
    LocaleString = strLocale
End Function

Function CDateLocale(d As Date) As String
  CDateLocale = Format(d, LocaleString())

End Function

С этим в модуле вы можете использовать = CDateLocale (A1) для преобразования даты в A1в локальный формат shortdate, но в виде текста, а не даты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...