код VBA:
Dim val As String
val = myCell.Value
Dim newval As String
If Len(val) = 2 Then
newval = "00:" & val
ElseIf Len(val) = 3 Then
newval = "0" & Left(val, 1) & ":" & Right(val, 2)
ElseIf Len(val) = 4 Then
newval = Left(val, 2) & ":" & Right(val, 2)
Else
newval = "Not a valid time"
End If
myCell.Value = newval
Этот код не определяет, являются ли последние две цифры действительным временем (более 59 минут), но в остальном он должен обрабатывать большинство случаев.
Вам также необходимо добавить регистр, если кто-то наберет 1 цифру, т.е. От 1 до 9 минут после полуночи.
Если вы хотите, чтобы оно форматировалось как фактическое время (тип даты и времени), измените форматирование ячейки на чч: мм.
Значение, введенное, например, 955, должно обрабатываться для получения доли дня.
псевдокод:
(left(myCell,len(myCell)-2) + (right(myCell,2)/60)) / 24
Это дает правильное десятичное значение для того, сколько дня прошло, и, таким образом, будет отображаться как правильное «Время» в ячейке с форматированием чч: мм.