Как отформатировать дату дд / мм / гггг в полную строковую дату? - PullRequest
0 голосов
/ 23 сентября 2019

В своем коде VBA я получаю дату от пользовательской формы и отображаю ее в ячейке.Но я хочу, чтобы в ячейке была указана такая дата: vendredi 1 mars 2019 => эквивалент пятницы первого марта 2019 года, но она на французском языке.

Но я получаю такую ​​дату от пользовательской формы:01/03/2019

Как мне отформатировать его в VBA, чтобы соответствовать тому, что я хочу?

1 Ответ

4 голосов
/ 23 сентября 2019

Предполагая, что вы получаете дату из текстового поля или что-то вроде String (только текст), вы должны сначала преобразовать ее в реальное значение даты.Поэтому мы разбиваем строку по ее разделителю / на 3 части (день, месяц, год) и используем функцию DateSerial , чтобы создать реальное значение даты (а не строку!)

Затем мы записываем значение даты в ячейку и форматируем его в желаемом числовом формате

[$-fr-FR]DDDD D MMMM YYYY;@

, который должен вернуть
enter image description here

Option Explicit

Public Sub ConvertStringToDateAndFormat()
    Dim FromUserForm As String
    FromUserForm = "01/03/2019" 'assuming you get a string from a textbox or something

    'split date into 3 parts 
    Dim SplitDate As Variant
    SplitDate = Split(FromUserForm, "/")

    'check if we got 3 parts
    If UBound(SplitDate) <> 2 Then
        MsgBox "invalid date"
        Exit Sub
    End If

    'write into cell and format cell
    With ThisWorkbook.Worksheets("Sheet1")
        .Range("A1").Value = DateSerial(SplitDate(2), SplitDate(1), SplitDate(0))
        .Range("A1").NumberFormat = "[$-fr-FR]DDDD D MMMM YYYY;@"
    End With
End Sub

Обратите внимание, что это отформатирует дату на французском языке, даже если она используется в английском Excel.Если вы хотите отформатировать его на языке, который пользователь фактически использует в своем Excel / Windows, тогда используйте .NumberFormat = "DDDD D MMMM YYYY;@", который будет французским во французской Windows и немецким в немецкой Windows.

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