| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Программирование, связанное с MS Office > Обход валидации ячейки |
| Автор: m9yt 20.9.2013, 07:54 |
| Добрый день. На ячейку повешена проверка действительных чисел. Как можно опередить событие валидации? Т.е. при, допустим, нажатии "Enter" у меня вначале редактируется введенный текст (в зависимости от региональных настроек меняется "." на "," или наоборот), а потом уже вызывается валидация. (Замену символов реализовал). Worksheet_Change не подходит, т.к. событие валидации обрабатывается раньше. Также интересует, как запретить вставку в ячейку заранее некорректных данных? Т.е. если в ней есть проверка на дату, и откуда-то вставить строку, то проверка не сработает. |
| Автор: Akina 20.9.2013, 08:55 |
| Неправильный инструмент или подход к решению задачи = геморрой. Сделай ввод только через формы ввода. Пусть вводят что хотят и как хотят. А по нажатию кнопки добавления - выполняем все проверки, и при ошибках тычем носом. Плюс сохранение некорректированного сырца. |
| Автор: m9yt 20.9.2013, 09:14 | ||
Знаю, что геморрой. Но заказчик так просит. А делать форму ввода ему не надо. Для ввода итак есть ячейка. Просто если это невозможно, то можно об этом сказать, и вопрос будет закрыт. |
| Автор: Akina 20.9.2013, 09:21 |
| Хорошо. Другой вариант - по всем мыслимым событиям (а лучше по таймеру) стартуем процедуру валидации, если она в текущий момент неактивна. Если строка не прошла валидации - помечаем её (скажем, иконкой с большой красной Х в спецово выделенной на то колонке). Само собой в этом случае она должа быть реально компактной и быстрой. |
| Автор: m9yt 20.9.2013, 09:52 | ||
Ну вы предложили что-то уж очень навороченное. Мне бы просто перехватить процедурку валидации (стандартную, экселевскую, которая срабатывает, когда на ячейку вешается проверка из вкладки "данные") |
| Автор: Akina 20.9.2013, 10:48 |
| Validation не порождает эвента, который можно обработать программно. |
| Автор: m9yt 20.9.2013, 11:08 | ||
Получается, что никак изменить текст в ячейке после нажатия "Enter", но до Validation, не получится? |
| Автор: FINANSIST 2.10.2013, 08:26 |
| простейший путь - перенос всех проверок валидации на событие change и отказ от валидации |