Всем добрый день!
Долгое время не требовалось быстрый ввод даты/времени делать, но вот опять понадобилось.
Как и раньше (года 3 назад) хотел взять , но все таки решил написать свой. Вдруг кому-то пригодится.
Буду рад комментариям и конструктивной критике)
DR - диапазон даты
TR - диапазон времени
Долгое время не требовалось быстрый ввод даты/времени делать, но вот опять понадобилось.
Как и раньше (года 3 назад) хотел взять , но все таки решил написать свой. Вдруг кому-то пригодится.
Буду рад комментариям и конструктивной критике)
DR - диапазон даты
TR - диапазон времени
| Код |
|---|
Private Sub Worksheet_Change(ByVal c As Range) Dim DR As Range, TR As Range Dim S As String, k As String Dim m& If c.Row = 1 Then GoTo EM Set DR = Columns(3) Set TR = Columns(4) S = Left(Year(Date), 2) If c.Column = 3 Then k = "Date format is not dmmyyyy" Else: If c.Column = 4 Then k = "Time format is not hmm" Else GoTo EM If IsNumeric(c) Then If Len(c) = 6 Or Len(c) = 5 Then If Len(c) = 6 Then m = 3 Else m = 2 If Len(c) = 4 Or Len(c) = 3 Then If Len(c) = 4 Then m = 2 Else m = 1 If Not Intersect(c, DR) Is Nothing And Len(c) = 6 Or Len(c) = 5 Then c = DateSerial(CDbl(S & Right(c, 2)), CDbl(Mid(c, m, 2)), CDbl(Left(c, m - 1))): GoTo EM If Not Intersect(c, TR) Is Nothing And Len(c) = 4 Or Len(c) = 3 Then c = Format(TimeSerial(CDbl(Left(c, m)), CDbl(Right(c, 2)), 0), "h:mm") Else If IsDate(c) Then GoTo EM MsgBox k, vbExclamation + vbOKOnly, "ERROR" End If EM: Set c = Nothing End Sub |
Изменено: - 28.11.2016 15:37:30
