Предполагая, что вы получаете дату из текстового поля или что-то вроде String
(только текст), вы должны сначала преобразовать ее в реальное значение даты.Поэтому мы разбиваем строку по ее разделителю /
на 3 части (день, месяц, год) и используем функцию DateSerial , чтобы создать реальное значение даты (а не строку!)
Затем мы записываем значение даты в ячейку и форматируем его в желаемом числовом формате
[$-fr-FR]DDDD D MMMM YYYY;@
, который должен вернуть
![enter image description here](https://i.stack.imgur.com/vUf77.png)
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.