Добрый вечер всем. И снова нужна помощь профи этого форума. В интернете нашел макрос на ввод даты без разделителей, но он работает в формате даты 12.01.2021, обязательно нужно вводить шесть цифр, можно ли отредактировать этот макрос, чтоб при вводе в ячейку 1201 получалось 12 января? Сам макрос в прикрепленном файле.
Добрый вечер всем. И снова нужна помощь профи этого форума. В интернете нашел макрос на ввод даты без разделителей, но он работает в формате даты 12.01.2021, обязательно нужно вводить шесть цифр, можно ли отредактировать этот макрос, чтоб при вводе в ячейку 1201 получалось 12 января? Сам макрос в прикрепленном файле.Смольный
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("I2:I10")) Is Nothing Then With Target StrVal = Format(.Text, "0000") If IsNumeric(StrVal) And Len(StrVal) = 4 Then Application.EnableEvents = False dDate = DateValue(Left(StrVal, 2) & "/" & Mid(StrVal, 3, 2) & "/" & Year(Date)) .NumberFormat = "dd/mm/yyyy" .Value = CDate(DateSerial(Year(dDate), Month(dDate), Day(dDate))) End If End With End If Application.EnableEvents = True End Sub
[/vba]
[admin]Вопросы по макросам необходимо размещать в разделе по VBA[/admin]
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("I2:I10")) Is Nothing Then With Target StrVal = Format(.Text, "0000") If IsNumeric(StrVal) And Len(StrVal) = 4 Then Application.EnableEvents = False dDate = DateValue(Left(StrVal, 2) & "/" & Mid(StrVal, 3, 2) & "/" & Year(Date)) .NumberFormat = "dd/mm/yyyy" .Value = CDate(DateSerial(Year(dDate), Month(dDate), Day(dDate))) End If End With End If Application.EnableEvents = True End Sub
[/vba]
[admin]Вопросы по макросам необходимо размещать в разделе по VBA[/admin]Serge_007
Serge_007, Попробовал в Вашем файле, так же как у меня. если ввожу 1002 то получается 10.02.2021 если меняю формат ячейки чтоб не показывало год то 28.09
Serge_007, Попробовал в Вашем файле, так же как у меня. если ввожу 1002 то получается 10.02.2021 если меняю формат ячейки чтоб не показывало год то 28.09Смольный
Если год не нужен, то и дата не нужна, можно обойтись текстом (формат ячеек тоже поменяйте на текстовый):[vba]
Код
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("I2:I10")) Is Nothing Then With Target StrVal = Format(.Text, "0000") If IsNumeric(StrVal) And Len(StrVal) = 4 Then Application.EnableEvents = False ' dDate = DateValue(Left(StrVal, 2) & "/" & Mid(StrVal, 3, 2) & "/" & Year(Date)) ' .NumberFormat = "dd/mm/yyyy" ' .Value = CDate(DateSerial(Year(dDate), Month(dDate), Day(dDate))) .Value = Left(StrVal, 2) & "." & Right(StrVal, 2) End If End With End If Application.EnableEvents = True End Sub
Если год не нужен, то и дата не нужна, можно обойтись текстом (формат ячеек тоже поменяйте на текстовый):[vba]
Код
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("I2:I10")) Is Nothing Then With Target StrVal = Format(.Text, "0000") If IsNumeric(StrVal) And Len(StrVal) = 4 Then Application.EnableEvents = False ' dDate = DateValue(Left(StrVal, 2) & "/" & Mid(StrVal, 3, 2) & "/" & Year(Date)) ' .NumberFormat = "dd/mm/yyyy" ' .Value = CDate(DateSerial(Year(dDate), Month(dDate), Day(dDate))) .Value = Left(StrVal, 2) & "." & Right(StrVal, 2) End If End With End If Application.EnableEvents = True End Sub
Serge_007, добрый день! Искал решения вопроса по быстрому вводу времени и набрел на этот топик. Макрос работает, но если ошибочно ввести, например 1243, то отображается 15.04.1903. Если попытаться исправить или вводить дату в других ячейках диапазона, то ошибка остается, все даты привязываются к 1900 году.
Спасибо!
зы: а интересует собственно следующее: ввод 643 -> отображает 06:43 и далее, что бы можно было работать с данными, для вычисления времени.
Serge_007, добрый день! Искал решения вопроса по быстрому вводу времени и набрел на этот топик. Макрос работает, но если ошибочно ввести, например 1243, то отображается 15.04.1903. Если попытаться исправить или вводить дату в других ячейках диапазона, то ошибка остается, все даты привязываются к 1900 году.
Спасибо!
зы: а интересует собственно следующее: ввод 643 -> отображает 06:43 и далее, что бы можно было работать с данными, для вычисления времени.10q