Здравствуйте! Год назад AndreTM дал мне пример создания контролов по нажатию кнопки на Userform. Пробую переработать под свои нужды. Пытаюсь добавить код обработки события CommandButton_Click через VBComponents.CodeModule в ходе выполнения процедуры. Код добавляется, но событие нажатия не перехватывает. Помогите разобраться, пожалуйста!
Здравствуйте! Год назад AndreTM дал мне пример создания контролов по нажатию кнопки на Userform. Пробую переработать под свои нужды. Пытаюсь добавить код обработки события CommandButton_Click через VBComponents.CodeModule в ходе выполнения процедуры. Код добавляется, но событие нажатия не перехватывает. Помогите разобраться, пожалуйста!EvgenyD
Да нет, там не мудрёно... там все было нормально. Но ТС изменил некоторые элементы интерфейса (удалил/добавил, как я понимаю), а события не подвязал. В чём и суть была - раз динамически управляем элементами формы - то и не забываем их потом удалить. Или поставить дополнительную проверку на их наличие. В общем, если перерабатываем "под свои нужды" - то и связи событий выстраиваем уже сразу "под новые нужды", а не просто тестируем, произошло ли что-нибудь с интерфейсом...
Да нет, там не мудрёно... там все было нормально. Но ТС изменил некоторые элементы интерфейса (удалил/добавил, как я понимаю), а события не подвязал. В чём и суть была - раз динамически управляем элементами формы - то и не забываем их потом удалить. Или поставить дополнительную проверку на их наличие. В общем, если перерабатываем "под свои нужды" - то и связи событий выстраиваем уже сразу "под новые нужды", а не просто тестируем, произошло ли что-нибудь с интерфейсом...AndreTM
За год изучения VBA так и не подружился с модулями класса (как и многими еще вещами), но понял что без класса динамически создавать элементы не получится, вот и решил все же попробовать разобраться сделав такую форму на основе примера предоставленного AndreTM. nilem, спасибо за решение. Догадка, что самый простой способ - это перехватить Click в классе были, но ввиду малопонятности для себя, понял что не разберусь. Подскажите, так и не понял переменная для экземпляра класса - почему она должна быть двухмерным массивом?
Форму я сделал заново, чтобы хоть немного разобраться как она работает.
Цитата
а события не подвязал
- я для того тему и создал, чтобы понять как их подвязать. Подскажите, пожалуйста, добавлять CommandButton_Click через VBComponents.CodeModule в ходе выполнения процедуры (как я пытался) совсем неправильно? Т.е. единственным верным решением в такой ситуации - это перехват события в модуле класса?
За год изучения VBA так и не подружился с модулями класса (как и многими еще вещами), но понял что без класса динамически создавать элементы не получится, вот и решил все же попробовать разобраться сделав такую форму на основе примера предоставленного AndreTM. nilem, спасибо за решение. Догадка, что самый простой способ - это перехватить Click в классе были, но ввиду малопонятности для себя, понял что не разберусь. Подскажите, так и не понял переменная для экземпляра класса - почему она должна быть двухмерным массивом?
Форму я сделал заново, чтобы хоть немного разобраться как она работает.
Цитата
а события не подвязал
- я для того тему и создал, чтобы понять как их подвязать. Подскажите, пожалуйста, добавлять CommandButton_Click через VBComponents.CodeModule в ходе выполнения процедуры (как я пытался) совсем неправильно? Т.е. единственным верным решением в такой ситуации - это перехват события в модуле класса?EvgenyD
показалось, что так правильнее: раз есть пары контролов (текстбокс и кнопка), то пусть и в массиве они будут парами, - и нам будет проще к ним обращаться, и контролам будет приятно Попробуйте сразу нарисовать на форме столько элементов, сколько понадобится, только часть из них сделать невидимыми (св-во Визибл). А по мере необходимости можно программно установить Visible=True и заодно увеличить высоту формы. Ну как вариант.
показалось, что так правильнее: раз есть пары контролов (текстбокс и кнопка), то пусть и в массиве они будут парами, - и нам будет проще к ним обращаться, и контролам будет приятно Попробуйте сразу нарисовать на форме столько элементов, сколько понадобится, только часть из них сделать невидимыми (св-во Визибл). А по мере необходимости можно программно установить Visible=True и заодно увеличить высоту формы. Ну как вариант.nilem