Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.07.2012, 16:25   #1
Bape}l{ka
Форумчанин
 
Аватар для Bape}l{ka
 
Регистрация: 25.05.2011
Сообщений: 249
По умолчанию активировать проверку данных с программно

привет всем))

подскажите пожалуйста.
в экселе есть Проверка данных, которую мы ставим в какие-то ячейки.
можно ли как-нибудь активировать/запустить эту проверку программно.

ситуация: у меня данные вводятся с через юзерформ. соответственно пользователь работает с формой, а не непосредственно вводит данные в ячейки - поэтому проверки не срабатывают.

надо, что бы форма внесла данные, а потом как-то запустить эту проверку.

возможно ли так сделать?
Bape}l{ka вне форума Ответить с цитированием
Старый 19.07.2012, 20:44   #2
motorway
Участник клуба
 
Регистрация: 28.06.2009
Сообщений: 1,950
По умолчанию

Может, записать макрорекордером нужные действия и вставить этот код в модуль формы?
motorway вне форума Ответить с цитированием
Старый 19.07.2012, 21:32   #3
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

Цитата:
надо, что бы форма внесла данные, а потом как-то запустить эту проверку
На мой взгляд, в корне неверный подход.

Куда проще (и правильнее) выполнять все проверки ДО записи данных в ячейки.

А ещё правильнее - вообще исключить возможность попытки записи неправильных данных.
Я это делаю так: по событию изменения каждого текстового поля проверяется корректность ввода, и, если введено недопустимое значение, под полем становится видимым Label с красным цветом шрифта, уведомляющий об ошибке ввода.
В то же время главная кнопка формы (типа «Добавить запись») становится недоступной (Enabled = FALSE).

Да, много кода требуется, - зато ошибки исключены, и для пользователя - это вполне очевидное поведение формы ввода.
EducatedFool вне форума Ответить с цитированием
Старый 23.07.2012, 14:42   #4
Bape}l{ka
Форумчанин
 
Аватар для Bape}l{ka
 
Регистрация: 25.05.2011
Сообщений: 249
По умолчанию

Цитата:
выполнять все проверки ДО записи данных в ячейки.
А ещё правильнее - вообще исключить возможность попытки записи неправильных данных.
EducatedFool,полностью с вами согласна, именно это я и имела в виду, просто неточно выразилась.

собственно проверки, которые ставятся на ячейки средствами эксель именно так и поступают (Данные - Проверка). я хотела схитрить и не писать весь код самой, а по событию изменения текстового поля запустить навешанную средствами эксель на ячейку проверку.

вся загвоздка, как мне эту проверку активировать, т.к. в экселе она активируется, если вводишь что-то в ячейку руками и выполняешь переход в другую ячейку.
когда же я ввожу данные посредством формы и выполняемого потом макроса, проверка не активируется
Bape}l{ka вне форума Ответить с цитированием
Старый 23.07.2012, 22:50   #5
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Представьте, что Вам это удалось - код формы записал что-то в ячейку, проверка сработала, условие не выполнено, Excel выдает соотв. сообщение и входит в режим редактирования ячейки.
Так как этот режим несовместим с работой макросов, форма закрывается. Вам это надо?
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 24.07.2012, 09:42   #6
Bape}l{ka
Форумчанин
 
Аватар для Bape}l{ka
 
Регистрация: 25.05.2011
Сообщений: 249
По умолчанию

ммм, вот какая канитель...
а может можно обратно перехватить управление до того, как эксель войдет в режим редактирования ячейки?
просто эксель такой инструмент проверки разработал. не хочется изобретать велосипед =ь
Bape}l{ka вне форума Ответить с цитированием
Старый 24.07.2012, 09:59   #7
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

Цитата:
а может можно обратно перехватить управление до того, как эксель войдет в режим редактирования ячейки?
Гипотетически это возможно используя API функции, но в результате вы затратите вдвое (в лучшем случае) больше усилий, чем при обработке ввода вручную.
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подключение базы данных программно doniyor БД в Delphi 5 17.04.2012 09:41
Выполнить проверку на наличие данных посредством ADO или SQL Blood_ghosT БД в Delphi 5 01.12.2011 11:17
Можно ли задавать и описывать массивы данных программно? clever77 Microsoft Office Excel 17 24.04.2011 23:17
Как создать программно базу данных? cargo29 БД в Delphi 5 20.01.2011 09:14
Как программно организовать проверку ввода данных? parsn Microsoft Office Excel 2 07.01.2010 17:31