virginijus
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Как быстро вводить дату и время в виде простых чисел (110507 вместо 11.05.2007 и 0635 вместо 6:35) в заданные ячейки листа? Вот нашел ответ, но почемуто не всегда работает, не поиму что не так. Даите пожалуиста ликбез. Спасибо Если Вам часто приходится вводить даты и время в ячейки, то Вам должна понравиться идея писать их сокращенно, без точек-дробей-двоеточий - просто как число. Чтобы (в заданном диапазоне ячеек листа) 250699 автоматически превращалось в 25.06.1999, а 1125 в 11:25. Для этого щелкните по ярлычку листа, куда будут вводиться даты и время и выберите Исходный текст (Source Code). В открывшееся окно редактора Visual Basic скопируйте и вставьте следующий код: Private Sub Worksheet_Change(ByVal Target As Range) Dim vVal Dim StrVal As String Dim dDate As Date If Target.Cells.Count > 1 Then Exit Sub If Not Intersect(Target, Range("A2:A10")) Is Nothing Then With Target StrVal = Format(.Text, "000000") If IsNumeric(StrVal) And Len(StrVal) = 6 Then Application.EnableEvents = False dDate = DateValue(Left(StrVal, 2) & "/" & Mid(StrVal, 3, 2) & "/" & Right(StrVal, 2)) .NumberFormat = "dd/mm/yyyy" .Value = CDate(DateSerial(Year(dDate), Month(dDate), Day(dDate))) End If End With End If If Not Intersect(Target, Range("B2:B10")) Is Nothing Then With Target vVal = Format(.Value, "0000") If IsNumeric(vVal) And Len(vVal) = 4 Then Application.EnableEvents = False .Value = Left(vVal, 2) & ":" & Right(vVal, 2) .NumberFormat = "[h]:mm" End If End With End If Application.EnableEvents = True End Sub |