Известная проблема при вводе значений дат. Есть колонка с датой. При вводе удобно пользоваться доп-клавиатурой. Но на доп-клавиатуре точка вводится как запятая и дату невозможно набрать верно. Подскажите, какой может быть выход?
Выделять столбец и заменять запятые на точки - не подходит. Заменить русскую систему на американскую (где разделитель не точка, а запятая) - тоже не выход.
Есть ли в экселе возможность настроить эксел для устранения этой проблемы?
Если нет, то как может выглядеть макрос, который для данного столбца будет налету (при вводе) заменять запятые на точки?
Файл не прикрепляю в виду общей постановки задачи (не знаю, что должно быть в файле)
может есть какое-то иное решение?
спасибо
Добрый день!
Известная проблема при вводе значений дат. Есть колонка с датой. При вводе удобно пользоваться доп-клавиатурой. Но на доп-клавиатуре точка вводится как запятая и дату невозможно набрать верно. Подскажите, какой может быть выход?
Выделять столбец и заменять запятые на точки - не подходит. Заменить русскую систему на американскую (где разделитель не точка, а запятая) - тоже не выход.
Есть ли в экселе возможность настроить эксел для устранения этой проблемы?
Если нет, то как может выглядеть макрос, который для данного столбца будет налету (при вводе) заменять запятые на точки?
Файл не прикрепляю в виду общей постановки задачи (не знаю, что должно быть в файле)
Option Explicit Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) Dim s$ If Target.Count > 1 Then Exit Sub If InStr(1, Target.Formula, ",") = 0 Then Exit Sub s = Target.Formula If UBound(Split(s, ",")) = 2 Then s = Replace(s, ",", ".") If IsDate(s) Then Target.Formula = s End Sub
[/vba]
Он будет заменять даты. при вводе руками (например 11,12,14 в 11.12.14)
Можно кинуть макрос в книгу:
[vba]
Код
Option Explicit Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) Dim s$ If Target.Count > 1 Then Exit Sub If InStr(1, Target.Formula, ",") = 0 Then Exit Sub s = Target.Formula If UBound(Split(s, ",")) = 2 Then s = Replace(s, ",", ".") If IsDate(s) Then Target.Formula = s End Sub
[/vba]
Он будет заменять даты. при вводе руками (например 11,12,14 в 11.12.14)SLAVICK
большое спасибо за макрос! к сожалению, не смог его дополнить-модифицировать
1. Что нужно добавить, чтобы короткий формат даты преобразовывался в длинный автоматически? Чтобы из 12,12,14 получалось 12.12.2014. Сейчас получается 12.12.14 и эксел не знает 2014 или 1914 год. Это не прихоть - просто при большом объёме ввода и привычке лишние цифирки упрощают жизнь человеку и тем самым уменьшают кол-во ошибок
спасибо
*** не сочтите на наглость, но очень интересно, насколько сложно реализовать следующее?:
2. Написано "Target.Count > 1". А как указать список столбцов, где необходимо преобразование? Чтобы в этих "избранных" столбцах не дописывать год, но чтобы он добавлялся/проставлялся автоматически (или брался из текущей даты или из какой-то определённой ячеки, например $E$1). Но если введены все три числа, то год не проставлялся бы.
большое спасибо за макрос! к сожалению, не смог его дополнить-модифицировать
1. Что нужно добавить, чтобы короткий формат даты преобразовывался в длинный автоматически? Чтобы из 12,12,14 получалось 12.12.2014. Сейчас получается 12.12.14 и эксел не знает 2014 или 1914 год. Это не прихоть - просто при большом объёме ввода и привычке лишние цифирки упрощают жизнь человеку и тем самым уменьшают кол-во ошибок
спасибо
*** не сочтите на наглость, но очень интересно, насколько сложно реализовать следующее?:
2. Написано "Target.Count > 1". А как указать список столбцов, где необходимо преобразование? Чтобы в этих "избранных" столбцах не дописывать год, но чтобы он добавлялся/проставлялся автоматически (или брался из текущей даты или из какой-то определённой ячеки, например $E$1). Но если введены все три числа, то год не проставлялся бы.карандаш
Второй вопрос к теме замены запятой на точку не относится
"Target.Count > 1" - это не номер столбца, а количество изменяемых за раз ячеек - если вы меняете сразу 10 ячеек, то без этой проверки макрос выдаст ошибку.
Задавать Рабочий диапазон можно многими способами... мне проще всего указать в пределах каких столбцов(Target.Column) - и (или) строк(Target.Row) изменять данные.
Второй вопрос к теме замены запятой на точку не относится
"Target.Count > 1" - это не номер столбца, а количество изменяемых за раз ячеек - если вы меняете сразу 10 ячеек, то без этой проверки макрос выдаст ошибку.
Задавать Рабочий диапазон можно многими способами... мне проще всего указать в пределах каких столбцов(Target.Column) - и (или) строк(Target.Row) изменять данные.SLAVICK
Иногда все проще чем кажется с первого взгляда.
Сообщение отредактировал SLAVICK - Среда, 03.12.2014, 10:22