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

Вход

Регистрация

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

 

= Мир MS Excel/Проверка на корректность дат (усовершенствование макроса) - Мир MS Excel

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

Excel 2013
Добрый день. Нужна ваша помощь.
Существует таблица из 5 столбцов. в 4 столбце стоит дата рождения. Строк может быть неограниченное количество. Так как даты могут вводить вручную (кто угодно и как угодно), необходимо проверять эти даты на правильность и исправлять, где это возможно (даты должны быть приведены в формат "дд.мм.гггг"). Остальные ячейки (пустые и не верные) помечать цветом. Так же существует ограничение по возрвасту (14-90 лет).
Написал скрипт. Он рабочий. Правда долго отрабатывает на большом количестве строк. Помогите, пожалуйста его усовершенствовать.

К сообщению приложен файл: test_21.xlsx (11.0 Kb)


Сообщение отредактировал SNIKKerS - Пятница, 05.09.2014, 10:13
 
Ответить
СообщениеДобрый день. Нужна ваша помощь.
Существует таблица из 5 столбцов. в 4 столбце стоит дата рождения. Строк может быть неограниченное количество. Так как даты могут вводить вручную (кто угодно и как угодно), необходимо проверять эти даты на правильность и исправлять, где это возможно (даты должны быть приведены в формат "дд.мм.гггг"). Остальные ячейки (пустые и не верные) помечать цветом. Так же существует ограничение по возрвасту (14-90 лет).
Написал скрипт. Он рабочий. Правда долго отрабатывает на большом количестве строк. Помогите, пожалуйста его усовершенствовать.


Автор - SNIKKerS
Дата добавления - 05.09.2014 в 10:12
AndreTM Дата: Пятница, 05.09.2014, 12:33 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 500 ±
Замечаний: 0% ±

2003 & 2010
Я бы посоветовал не надеяться на возможности автоформата Excel. Ну и совершенно незачем задействовать ячейки листа для расчетов и копирования - именно это и "тормозит" код (плюс - "перерисовка" значений на листе). Попробуйте как-то так, как показано в файле.
Что делать с датами типа "05/15/65" (преобразуемыми в #15.05.1965#) - уже на ваше усмотрение, можно и их отмечать как "неверные" :)
К сообщению приложен файл: 10-12834-1-1.xls (48.0 Kb)


Skype: andre.tm.007
Donate: Qiwi: 9517375010


Сообщение отредактировал AndreTM - Пятница, 05.09.2014, 12:45
 
Ответить
СообщениеЯ бы посоветовал не надеяться на возможности автоформата Excel. Ну и совершенно незачем задействовать ячейки листа для расчетов и копирования - именно это и "тормозит" код (плюс - "перерисовка" значений на листе). Попробуйте как-то так, как показано в файле.
Что делать с датами типа "05/15/65" (преобразуемыми в #15.05.1965#) - уже на ваше усмотрение, можно и их отмечать как "неверные" :)

Автор - AndreTM
Дата добавления - 05.09.2014 в 12:33
SNIKKerS Дата: Пятница, 05.09.2014, 12:56 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Вот я и думал, каким образом не задействовать ячейки. Так на ум ничего не пришло.
В вашем варианте есть один нюанс: если опечатался в месяце (вместо 05 написал 15) (строка 7 и строка 12), при этом в дне стоит число <=12, то ваш скрипт меняет месяц и год местами. А это не верно. Именно поэтому для проверки я сначала переводил ячейку в текст, а затем обратно в дату и проверял, является ли полученное значение датой.


Сообщение отредактировал SNIKKerS - Пятница, 05.09.2014, 12:58
 
Ответить
СообщениеВот я и думал, каким образом не задействовать ячейки. Так на ум ничего не пришло.
В вашем варианте есть один нюанс: если опечатался в месяце (вместо 05 написал 15) (строка 7 и строка 12), при этом в дне стоит число <=12, то ваш скрипт меняет месяц и год местами. А это не верно. Именно поэтому для проверки я сначала переводил ячейку в текст, а затем обратно в дату и проверял, является ли полученное значение датой.

Автор - SNIKKerS
Дата добавления - 05.09.2014 в 12:56
AndreTM Дата: Пятница, 05.09.2014, 14:04 | Сообщение № 4
Группа: Друзья
Ранг: Старожил
Сообщений: 1762
Репутация: 500 ±
Замечаний: 0% ±

2003 & 2010
"это не баг" (с) :)
Тем более, что полученное значение и у вас - будет датой, и пройдет проверку, и поменяется тоже, я же вам в предыдущем посте пример приводил.
Так что надо все равно дописывать ещё одну проверку на такие "ошибки". Вот как в следующем примере:
К сообщению приложен файл: 5187863.xls (49.5 Kb)


Skype: andre.tm.007
Donate: Qiwi: 9517375010
 
Ответить
Сообщение"это не баг" (с) :)
Тем более, что полученное значение и у вас - будет датой, и пройдет проверку, и поменяется тоже, я же вам в предыдущем посте пример приводил.
Так что надо все равно дописывать ещё одну проверку на такие "ошибки". Вот как в следующем примере:

Автор - AndreTM
Дата добавления - 05.09.2014 в 14:04
SNIKKerS Дата: Пятница, 05.09.2014, 15:00 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 3
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Спасибо! Плюсик улетел..


Сообщение отредактировал SNIKKerS - Пятница, 05.09.2014, 15:47
 
Ответить
СообщениеСпасибо! Плюсик улетел..

Автор - SNIKKerS
Дата добавления - 05.09.2014 в 15:00
ikki Дата: Суббота, 06.09.2014, 06:41 | Сообщение № 6
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
я тожи хачу плюсик :(
вариант с регуляркой (часть кода безжалостно стырил у AndreTM)


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki


Сообщение отредактировал ikki - Суббота, 06.09.2014, 06:55
 
Ответить
Сообщениея тожи хачу плюсик :(
вариант с регуляркой (часть кода безжалостно стырил у AndreTM)

Автор - ikki
Дата добавления - 06.09.2014 в 06:41
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Проверка на корректность дат (усовершенствование макроса) (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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