Добрый день!
Вопрос от новичка в vba. Не могу разобраться куда писать обработчики пользовательских событий от форм пользователей.
Создаю форму UserForm1. В код формы пишу событие Public Event event1(). Здесь же создаю обработчик стандартного события Click и в него вписываю RaiseEvent event1.
UserForm1(Code):
Код обработчика события Event1 планирую простейший:
Если запустить форму, без использования обработчика события Event1, все работает. Форма появляется, нажимаешь по ней мышкой, в окне Immediate пишется "Click". Работает как положено. Запускаю форму с того же Immediate командой UserForm1.Show
И вот тут начинается вся сложность у меня... Куда написать обработчик события Event1?
Писал обработчик сюда же в код формы (UserForm1(Code)):
и вариант с именем как в событии Click
и вариант c оригинальным именем формы UserForm1
Не работает.
Пытался запустить форму через переменную. В модуле нельзя создавать переменные с WithEvents, говорить используй только в модулях классов.
Создал класс Class1. В его коде создал переменную. Там же появилось в выпадающем списке событие формы, на которую ссылается переменная. Выбрал. Автоматически создался обработчик события Event1. Добавил в него Debug.Print "Event1"
Что делать дальше, что бы заработал обработчик? Не могу понять... Суть простая - запускаешь, допустим, через Immediate UserForm1.Show форму и работают оба события - сначала стандартное Click, затем пользовательское Event1. Что с шаблоном класса Class1 делать дальше, что бы при запуске UserForm1 работало и Event1?
Интересует в общем - как обрабатывать ПОЛЬЗОВАТЕЛЬСКИЕ события форм и классов. Где допускается создавать обработчики пользовательских событий?
Стандартные обработчики, как я понял, создаются непосредственно в объекте формы. Можно ли создать свое событие (не стандартное), что бы оно так же было в выпадающем списке событий формы (Click, DblClick,Activate,Deactivae,MyEvent1, и так далее) Можно ли обработчики стандартных событий (Click, DblClick) помещать не в с самой форме?
Может посоветуете литературу или ресурс, где можно данные вопросы выяснить? Сколько перечитал информации, везде только пишут о том, как создавать обработчики стандартных событий. Может в формах нельзя создавать собственные события? Но допускается же надпись Public Event Event1(), причем только Public. Тогда зачем?...
Вопрос от новичка в vba. Не могу разобраться куда писать обработчики пользовательских событий от форм пользователей.
Создаю форму UserForm1. В код формы пишу событие Public Event event1(). Здесь же создаю обработчик стандартного события Click и в него вписываю RaiseEvent event1.
UserForm1(Code):
Код |
---|
Public Event Event1() Private Sub UserForm_Click() RaiseEvent Event1 Debug.Print "Click" End Sub |
Код |
---|
Debug.Print "Event1" |
И вот тут начинается вся сложность у меня... Куда написать обработчик события Event1?
Писал обработчик сюда же в код формы (UserForm1(Code)):
и вариант с именем как в событии Click
Код |
---|
Private Sub UserForm_Event1() Debug.Print "Event1" End Sub |
Код |
---|
Private Sub UserForm1_Event1() Debug.Print "Event1" End Sub |
Пытался запустить форму через переменную. В модуле нельзя создавать переменные с WithEvents, говорить используй только в модулях классов.
Создал класс Class1. В его коде создал переменную. Там же появилось в выпадающем списке событие формы, на которую ссылается переменная. Выбрал. Автоматически создался обработчик события Event1. Добавил в него Debug.Print "Event1"
Код |
---|
Public WithEvents f As UserForm1 Private Sub f_Event1() Debug.Print "event1" End Sub |
Интересует в общем - как обрабатывать ПОЛЬЗОВАТЕЛЬСКИЕ события форм и классов. Где допускается создавать обработчики пользовательских событий?
Стандартные обработчики, как я понял, создаются непосредственно в объекте формы. Можно ли создать свое событие (не стандартное), что бы оно так же было в выпадающем списке событий формы (Click, DblClick,Activate,Deactivae,MyEvent1, и так далее) Можно ли обработчики стандартных событий (Click, DblClick) помещать не в с самой форме?
Может посоветуете литературу или ресурс, где можно данные вопросы выяснить? Сколько перечитал информации, везде только пишут о том, как создавать обработчики стандартных событий. Может в формах нельзя создавать собственные события? Но допускается же надпись Public Event Event1(), причем только Public. Тогда зачем?...