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

Вход

Регистрация

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

 

= Мир MS Excel/Исправление дат в ячейке - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Исправление дат в ячейке (Макросы/Sub)
Исправление дат в ячейке
Kongа Дата: Пятница, 13.01.2017, 04:41 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 24
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Здравствуйте. Помогите, пожалуйста, решить проблему с введением дат. Работники очень-очень часто ставят неверный формат даты, то есть вместо точек ставят запятые, буквы, восклицательные знаки, лишние пробелы и прочее. Можно ли сделать макрос, который исправлял бы это, чтобы подгонял все под единый стандарт "2 числа-точка-2 числа-точка-4 числа"? Рабочие столбцы B и F.
К сообщению приложен файл: -2-.xls (24.5 Kb)


Сообщение отредактировал Kongа - Пятница, 13.01.2017, 04:43
 
Ответить
СообщениеЗдравствуйте. Помогите, пожалуйста, решить проблему с введением дат. Работники очень-очень часто ставят неверный формат даты, то есть вместо точек ставят запятые, буквы, восклицательные знаки, лишние пробелы и прочее. Можно ли сделать макрос, который исправлял бы это, чтобы подгонял все под единый стандарт "2 числа-точка-2 числа-точка-4 числа"? Рабочие столбцы B и F.

Автор - Kongа
Дата добавления - 13.01.2017 в 04:41
bmv98rus Дата: Пятница, 13.01.2017, 07:37 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4111
Репутация: 768 ±
Замечаний: 0% ±

Excel 2013/2016
Kongа,

Вам необходимо автоматизировать исправления сразу при вводе или ограничить вольности оператора ? Первое - да можно, но что делать в случае совсем нестандартного ввода, когда заменой запятых, убиранием пробелов не обойтись.? А так - очень небольшой скрипт Только с плюсами будет один минус, пропадет возможность отмены последних действий. Второе делается проще, в приложениие пример на основе встроенных средств проверки.
К сообщению приложен файл: Copy_of-2-.xls (25.0 Kb)


Замечательный Временно просто медведь , процентов на 20.

Сообщение отредактировал bmv98rus - Пятница, 13.01.2017, 07:40
 
Ответить
СообщениеKongа,

Вам необходимо автоматизировать исправления сразу при вводе или ограничить вольности оператора ? Первое - да можно, но что делать в случае совсем нестандартного ввода, когда заменой запятых, убиранием пробелов не обойтись.? А так - очень небольшой скрипт Только с плюсами будет один минус, пропадет возможность отмены последних действий. Второе делается проще, в приложениие пример на основе встроенных средств проверки.

Автор - bmv98rus
Дата добавления - 13.01.2017 в 07:37
Kongа Дата: Пятница, 13.01.2017, 10:53 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 24
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
bmv98rus, лучше макросом, ввод данных на этих столбцах, всегда един, то есть "2 числа-точка-2 числа-точка-4 числа", иных они не ставят. Второй вариант я применила, но к тем, кто совсем не обучаем и находится на дальних территориях, их часто не проконтролируешь, а рядом кто сидит, им можно и проще сделать. Если Вам не сложно, то прошу поделится этим чудом.
 
Ответить
Сообщениеbmv98rus, лучше макросом, ввод данных на этих столбцах, всегда един, то есть "2 числа-точка-2 числа-точка-4 числа", иных они не ставят. Второй вариант я применила, но к тем, кто совсем не обучаем и находится на дальних территориях, их часто не проконтролируешь, а рядом кто сидит, им можно и проще сделать. Если Вам не сложно, то прошу поделится этим чудом.

Автор - Kongа
Дата добавления - 13.01.2017 в 10:53
bmv98rus Дата: Пятница, 13.01.2017, 12:09 | Сообщение № 4
Группа: Друзья
Ранг: Участник клуба
Сообщений: 4111
Репутация: 768 ±
Замечаний: 0% ±

Excel 2013/2016
Kongа,

Все не оптимально и сейчас раскритикуют, тем более что все учесть времени нет.

Примечанием если совсем не число типа 130,1,2014 то просто стирает. Еа всякий случай форматируя "ДД.ММ.ГГГГ"
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    Dim result As String
    With Target
        If (.Column = 2 Or .Column = 6) And .Row <> 1 _
            And Not IsNumeric(.Value) And Not IsEmpty(.Value) Then
            For i = 1 To Len(.Value)
                MyChar = Mid(.Value, i, 1)
                MyChrCode = Asc(MyChar)
                If MyChar = "." Or MyChrCode >= 48 And MyChrCode <= 57 Then
                    result = result & MyChar
                ElseIf MyChar = "," Or MyChar = ":" Then
                    result = result & "."
                End If
            Next i
        On Error Resume Next
        .Value = CDate(result)
        If Err.Number <> 0 Then
                .ClearContents
        Else
            .NumberFormat = "m/d/yyyy"
        End If
        Application.EnableEvents = True
      End If
    End With
End Sub
[/vba]
К сообщению приложен файл: 1732757.xls (38.5 Kb)


Замечательный Временно просто медведь , процентов на 20.

Сообщение отредактировал bmv98rus - Пятница, 13.01.2017, 12:11
 
Ответить
СообщениеKongа,

Все не оптимально и сейчас раскритикуют, тем более что все учесть времени нет.

Примечанием если совсем не число типа 130,1,2014 то просто стирает. Еа всякий случай форматируя "ДД.ММ.ГГГГ"
[vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    Dim result As String
    With Target
        If (.Column = 2 Or .Column = 6) And .Row <> 1 _
            And Not IsNumeric(.Value) And Not IsEmpty(.Value) Then
            For i = 1 To Len(.Value)
                MyChar = Mid(.Value, i, 1)
                MyChrCode = Asc(MyChar)
                If MyChar = "." Or MyChrCode >= 48 And MyChrCode <= 57 Then
                    result = result & MyChar
                ElseIf MyChar = "," Or MyChar = ":" Then
                    result = result & "."
                End If
            Next i
        On Error Resume Next
        .Value = CDate(result)
        If Err.Number <> 0 Then
                .ClearContents
        Else
            .NumberFormat = "m/d/yyyy"
        End If
        Application.EnableEvents = True
      End If
    End With
End Sub
[/vba]

Автор - bmv98rus
Дата добавления - 13.01.2017 в 12:09
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Исправление дат в ячейке (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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