Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Быстрый ввод даты без разделителей - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Быстрый ввод даты без разделителей (Формулы/Formulas)
Быстрый ввод даты без разделителей
Смольный Дата: Четверг, 23.12.2021, 17:33 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 188
Репутация: 0 ±
Замечаний: 0% ±

Добрый вечер всем. И снова нужна помощь профи этого форума. В интернете нашел макрос на ввод даты без разделителей, но он работает в формате даты 12.01.2021, обязательно нужно вводить шесть цифр, можно ли отредактировать этот макрос, чтоб при вводе в ячейку 1201 получалось 12 января? Сам макрос в прикрепленном файле.
К сообщению приложен файл: 8922909.xlsm (17.6 Kb)
 
Ответить
СообщениеДобрый вечер всем. И снова нужна помощь профи этого форума. В интернете нашел макрос на ввод даты без разделителей, но он работает в формате даты 12.01.2021, обязательно нужно вводить шесть цифр, можно ли отредактировать этот макрос, чтоб при вводе в ячейку 1201 получалось 12 января? Сам макрос в прикрепленном файле.

Автор - Смольный
Дата добавления - 23.12.2021 в 17:33
Serge_007 Дата: Четверг, 23.12.2021, 17:40 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2748 ±
Замечаний: ±

Excel 2016
Здравствуйте

Цитата Смольный, 23.12.2021 в 17:33, в сообщении № 1 ()
при вводе в ячейку 1201 получалось 12 января
текущего года:
[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)))
            End If
        End With
    End If
    Application.EnableEvents = True
End Sub
[/vba]

[admin]Вопросы по макросам необходимо размещать в разделе по VBA[/admin]
К сообщению приложен файл: 20211223_.xls (74.5 Kb)


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
СообщениеЗдравствуйте

Цитата Смольный, 23.12.2021 в 17:33, в сообщении № 1 ()
при вводе в ячейку 1201 получалось 12 января
текущего года:
[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)))
            End If
        End With
    End If
    Application.EnableEvents = True
End Sub
[/vba]

[admin]Вопросы по макросам необходимо размещать в разделе по VBA[/admin]

Автор - Serge_007
Дата добавления - 23.12.2021 в 17:40
Смольный Дата: Четверг, 23.12.2021, 17:45 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 188
Репутация: 0 ±
Замечаний: 0% ±

Serge_007, пробовал я так, не работает. пишу 1201 а получается 27 сентября.
 
Ответить
СообщениеSerge_007, пробовал я так, не работает. пишу 1201 а получается 27 сентября.

Автор - Смольный
Дата добавления - 23.12.2021 в 17:45
Serge_007 Дата: Четверг, 23.12.2021, 17:49 | Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2748 ±
Замечаний: ±

Excel 2016
Цитата Смольный, 23.12.2021 в 17:45, в сообщении № 3 ()
пробовал я так
Как?

Цитата Смольный, 23.12.2021 в 17:45, в сообщении № 3 ()
не работает
Не верю. Что-то неправильно делаете. Пробуйте в моем файле


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Цитата Смольный, 23.12.2021 в 17:45, в сообщении № 3 ()
пробовал я так
Как?

Цитата Смольный, 23.12.2021 в 17:45, в сообщении № 3 ()
не работает
Не верю. Что-то неправильно делаете. Пробуйте в моем файле

Автор - Serge_007
Дата добавления - 23.12.2021 в 17:49
Смольный Дата: Четверг, 23.12.2021, 17:54 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 188
Репутация: 0 ±
Замечаний: 0% ±

Serge_007, Попробовал в Вашем файле, так же как у меня. если ввожу 1002 то получается 10.02.2021 если меняю формат ячейки чтоб не показывало год то 28.09
 
Ответить
СообщениеSerge_007, Попробовал в Вашем файле, так же как у меня. если ввожу 1002 то получается 10.02.2021 если меняю формат ячейки чтоб не показывало год то 28.09

Автор - Смольный
Дата добавления - 23.12.2021 в 17:54
Serge_007 Дата: Четверг, 23.12.2021, 17:56 | Сообщение № 6
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2748 ±
Замечаний: ±

Excel 2016
Цитата Смольный, 23.12.2021 в 17:54, в сообщении № 5 ()
если ввожу 1002 то получается 10.02.2021
Значит макрос корректно работает

Цитата Смольный, 23.12.2021 в 17:54, в сообщении № 5 ()
если меняю формат ячейки чтоб не показывало год то 28.09
Опять что-то неправильно делаете, возможно формат меняете ДО ввода даты


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Цитата Смольный, 23.12.2021 в 17:54, в сообщении № 5 ()
если ввожу 1002 то получается 10.02.2021
Значит макрос корректно работает

Цитата Смольный, 23.12.2021 в 17:54, в сообщении № 5 ()
если меняю формат ячейки чтоб не показывало год то 28.09
Опять что-то неправильно делаете, возможно формат меняете ДО ввода даты

Автор - Serge_007
Дата добавления - 23.12.2021 в 17:56
Смольный Дата: Четверг, 23.12.2021, 18:05 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 188
Репутация: 0 ±
Замечаний: 0% ±

Serge_007, ну да, до ввода даты, получается после каждого ввода даты нужно заходить и менять формат ячейки?
 
Ответить
СообщениеSerge_007, ну да, до ввода даты, получается после каждого ввода даты нужно заходить и менять формат ячейки?

Автор - Смольный
Дата добавления - 23.12.2021 в 18:05
Serge_007 Дата: Пятница, 24.12.2021, 09:31 | Сообщение № 8
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2748 ±
Замечаний: ±

Excel 2016
Цитата Смольный, 23.12.2021 в 17:54, в сообщении № 5 ()
меняю формат ячейки чтоб не показывало год
Если год не нужен, то и дата не нужна, можно обойтись текстом (формат ячеек тоже поменяйте на текстовый):[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]


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщение
Цитата Смольный, 23.12.2021 в 17:54, в сообщении № 5 ()
меняю формат ячейки чтоб не показывало год
Если год не нужен, то и дата не нужна, можно обойтись текстом (формат ячеек тоже поменяйте на текстовый):[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]

Автор - Serge_007
Дата добавления - 24.12.2021 в 09:31
Смольный Дата: Пятница, 24.12.2021, 12:41 | Сообщение № 9
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 188
Репутация: 0 ±
Замечаний: 0% ±

Serge_007, спасибо за Ваше терпение.
 
Ответить
СообщениеSerge_007, спасибо за Ваше терпение.

Автор - Смольный
Дата добавления - 24.12.2021 в 12:41
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Быстрый ввод даты без разделителей (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!