Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Отслеживание изменений на UserForm
 
Добрый день всем.

Нужна помощь опытных, так как сам с подобным еще не сталкивался и самому разобраться не получилось.
Есть UserForm, на ней ComboBox-4 штуки, TextBox-4 штуки и кнопка.
Нужно чтобы только при [.Value <>""] Комбо и Текст Боксов значение кнопки [.Eneble=True]
Как это сделать? (Что-то вроде Privat Sub UserForm_Change())

Заранее спасибо!
 
ну так и сделаете по событиям изменений каждого из контролов контроль и смену парамтра кнопки. Я б через глобальную переменную сделал  при изменение изменять 2^x  , логически  сравнить с 2^(n-1) и если все 1 то кнопку разрешить.
 
Не совсем понял, где будет происходить проверка?
 
В макросах
 
Цитата
Artmasterpro написал:
Нужно чтобы только при [.Value <>""] Комбо и Текст Боксов значение кнопки [.Eneble=True]
ну так на каждый контрол в этом случае вешается проверка: если все заполнены - то активируем кнопку, если хоть один пуст - блокируем.
И у текстбоксов и комбобоксов есть событие Change - его и надо отслеживать.
А понятия "изменение формы" не применимо в данном случае, т.к. сама форма лишь контейнер и единственное, что она может менять это размеры, положение и прочие свойства отображения. Изменять ей самой нечего - только элементам, расположенным на ней.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Код
Private Sub ComboBox1_Change()
   ' ТУТ
End Sub
и
Private Sub TextBox1_Change()
  ' тут
End Sub
можно извратится и события отлавливать одним кодом, но в результате сложнее будет.
Изменено: БМВ - 27 Фев 2017 21:18:53
 
Цитата
БМВ написал:
можно извратится и события отлавливать одним кодом, но в результате сложнее будет
не думаю. Для этого используются модули классов и в дальнейшем использовании подход с их использованием куда удобнее. При добавлении новых контролов для отслеживания не надо будет городить доп.коды с отслеживанием.
Здесь более подробно описывал подобное(если интересно): Работа с модулями классов
Или я не так понял?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
The_Prist, все правильно и поняли и написали, только возьмите поправку на уровень автора. Смерти ему желаете? :-)
 
я отвечал на фразу "в результате сложнее будет" :) В результате-то как раз будет проще, если разобраться с модулями классов. Что, кстати, не так уж сложно. Можно тупо скачать файл из статьи и под свои нужды настроить. Подробное описание что за что отвечает вроде в статье есть.
А автору желаю исключительно добра. Поэтому и дал ссылку. Потому как когда потребуется проверять не 8 контролов, а 28 - как раз вызов процедуры для каждого будет менее предпочтителен...
Изменено: The_Prist - 28 Фев 2017 09:34:11
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
The_Prist написал:
Потому как когда потребуется проверять не 8 контролов, а 28 - как раз вызов процедуры для каждого будет менее предпочтителен...
спору нет, но все конечно зависит от задачи. Обратите вниманеи , порой какой-либо метод начинают применять где надо и нет. Это примерно как в запросе SELECT * всегда использовать, точно ничего не пропустишь :-).  Я сам уже давно не програмист но порой вижу как ребята незадумываясь строчат код который в данном случае не нужен, но они так привыкли. Это как хорошо, например про комментарии или обработку ошибок, так и порой захламляет.
Если Автор разберется с класами - я только за. Наврено в том посте надо было написать "но в результате на данном этапе, для этой задачи, Вам сложнее будет."
 
Ещё вариант: циклом пробегать по нужным контролам: пока все не будут заполнены - кнопку блокировать. Или вообще её не отображать )
 
Цитата
Юрий М написал:
циклом пробегать по нужным контролам
Юрий, и через промежуточный вопрос о том, как отделить нужные от ненужных и ответ что использовтаь например TAG сразу  GOTO #3  с вопросом, где этот цикл запускать :-)
 
Про Tag - верно: пометить предварительно нужные )) А если судить по стартовому сообщению, то там "лишних" TextBox и ComboBox нет - тогда можно и не помечать Tag, а проверять тип контрола.
Запуск по событию Exit для TextBox и Change (Click) для ComboBox.
Но, повторюсь - это ведь только вариант. Альтернатива, не побоюсь этого слова )
 
Спасибо всем за варианты, как альтернативные так и сложные, попробую разобраться с классами - с ними еще не сталкивался поэтому интересно.
Изменено: Artmasterpro - 28 Фев 2017 22:54:29
 
немного поразбираетесь и месяца через 3-4 пишите снова
хотите запустить все через 2-3 дня - возьмите за основу рекомендации из сообщения #6
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Проще всего проверять требуемые условия в коде нажатия кнопки.
При невыполнении условий - Exit Sub, а при выполнении – сделать кодом то, что планировалось.
Vladimir Zakharov
Microsoft MVP – Excel
 
В качестве экзотики приложил вариант, в котором сама форма используется как модуль класса для отслеживания изменений всех текстбоксов и комбобоксов кодом одной процедуры. Форма закрывается только кнопкой, которая доступна при наличии значений во всех обозначенных выше элементах формы. Нужно учесть, что этот метод расточительнее использования отдельного модуля класса, но для развлечений сгодится :)
Изменено: ZVI - 1 Мар 2017 02:56:52
Vladimir Zakharov
Microsoft MVP – Excel
 
Цитата
ZVI написал:
Проще всего проверять требуемые условия в коде нажатия кнопки.
Бесспорно, но
Цитата
Artmasterpro написал:
Нужно чтобы только при [.Value <>""] Комбо и Текст Боксов значение кнопки [.Eneble=True]
Ігор Гончаренко, 3-4 месяца наверно перебор, но то что начинать надо с малого - это точно

Offtop  
Цитата
Artmasterpro написал:
с ними еще не сталкивался поэтому интересно.
Это замечательно что интересно, просто исходя из уровня вашего первого вопроса, вам рано в классы погружаться. Я себя за гения не считаю, но тут потребовалось определять запаролен ли  файл PowerPoint и если c PPTX оказалось просто, спасибо Андрею VG, подсказал путь., то  старый формат ..... пока читал [MS-PPT]: PowerPoint (.ppt) Binary File сильно загрустил :-). для разовой задачи оказалось перебором такой интерес и реализация функции.
Страницы: 1
Читают тему (гостей: 1)