Страницы: 1
RSS
Быстрый ввод даты и времени в одну ячейку. Ведущие нули в дате - как ввести?
 
Добрый день всем.

Необходим подсчет времени (часы и минуты) в интервале между разными датами.
Есть макрос для "быстрого" (без доп знаков) ввода даты и времени в одну ячейку:
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim k As String, sD As String
    If Target.Cells.Count > 1 Then Exit Sub
    With Target
        k = .Text
        If Not k Like "##########" Then Exit Sub
        Application.EnableEvents = False
        sD = Left(k, 2) & "/" & Mid(k, 3, 2) & "/" & Mid(k, 5, 2) & " " & Mid(k, 7, 2) & ":" & Right(k, 2)
        If IsDate(sD) Then .Value = CDate(sD)
        Application.EnableEvents = True
    End With
End Sub

Все работает (обрабатывается) как надо, пока в дате день записывается двумя значащими цифрами, напр.: 1210211500 = 12.10.2021 15:00.
Но при вводе даты с ведущим нулем в днях, макрос "не работает" (остается строка цифр, но без ведущего "0"): 0110211500 = 110111500.

Подскажите, что, как и где нужно изменить (макрос или формат ячеек, или что?), чтоб это исправить?
Эксель = 2013, формат ячеек перед вводом значений = общий.
 
Код
Private Sub Worksheet_Change(ByVal Target As Range)
   Dim k As String, sD As String
   If Target.Cells.Count > 1 Then Exit Sub
   With Target
       k = .Text
       If k Like "##########" Or k Like "#########" Then
          Application.EnableEvents = False
          If Len(k) = 9 Then k = "0" + k
          sD = Left(k, 2) & "/" & Mid(k, 3, 2) & "/" & Mid(k, 5, 2) & " " & Mid(k, 7, 2) & ":" & Right(k, 2)
          If IsDate(sD) Then .Value = CDate(sD)
          Application.EnableEvents = True
       Else: Exit Sub
       End If
   End With
End Sub
 
Андрей_26, спасибо большое! Работает!
Страницы: 1
Наверх