Это код даты, который я использую на контроле, содержащий даты в Великобритании:
Private Sub UserForm_Initialize()
Me.txtDate = Format(Date, "dd-mmm-yyyy")
End Sub
В событии AfterUpdate
для управления датой:
Private Sub txtDate_AfterUpdate()
With Me
FormatDate .txtDate
End With
End Sub
В обычном модуле:
Public Sub FormatDate(ctrl As Control)
Dim dDate As Date
Dim IsDate As Boolean
If Replace(ctrl.Value, " ", "") <> "" Then
On Error Resume Next
dDate = CDate(ctrl.Value)
IsDate = (Err.Number = 0)
Err.Clear
On Error GoTo 0
If IsDate Then
ctrl.Value = Format(ctrl.Value, "dd-mmm-yyyy")
ctrl.BackColor = RGB(255, 255, 255)
Else
ctrl.BackColor = RGB(255, 0, 0)
End If
End If
End Sub
Затем я переношу его на лист (на кнопку «Сохранить»), используя следующий код:
shtRawData.Cells(rLastCell.Row, CLng(lCol)) = CDate(ctrl.Value)