Любопитни ли сте как да напишете процедура за обработка на събития във VBA? VBE ви помага, когато сте готови да напишете процедура за обработка на събития; той показва списък с всички събития за избрания обект.
В горната част на всеки прозорец с кода ще намерите два падащи списъка:
По подразбиране падащият списък Обект в прозореца Код показва Общи.
Ако пишете манипулатор на събития за обекта ThisWorkbook, трябва да щракнете върху ThisWorkbook в прозореца на проекта и след това да изберете Работна книга от падащото меню Object (това е единственият друг избор).
Ако пишете манипулатор на събитие за обект Sheet, трябва да щракнете върху конкретния лист в прозореца на проекта и след това да изберете Работен лист от падащия списък Обект (отново единственият друг избор).
След като направите своя избор от падащия списък Обект, можете да изберете събитието от падащия списък Процедура. Ето някои от вариантите за събитие, свързано с работната книга.
Избор на събитие в прозореца Code за обекта ThisWorkbook.
Когато изберете събитие от списъка, VBE автоматично започва да създава процедура за обработка на събития за вас. Това е много полезна функция, защото ви казва точно какви са правилните аргументи.
Ето една малка странност. Когато за първи път изберете Работна книга от списъка с обекти, VBE винаги приема, че искате да създадете процедура за обработка на събития за събитието Open и я създава вместо вас. Ако всъщност създавате процедура Workbook_Open, това е добре. Но ако създавате различна процедура за събитие, трябва да изтриете празния Workbook_Open Sub, който е създаден.
Помощта на VBE обаче стига само дотук. Той записва подизявлението и крайното подизявление. Написването на VBA кода, който минава между тези две изявления, е ваша работа.
Всъщност не е нужно да използвате тези два падащи списъка, но това улеснява работата ви, тъй като името на процедурата за обработка на събития е изключително важно. Ако не разберете точно името, процедурата няма да работи. Също така, някои процедури за обработка на събития използват един или повече аргументи в израза Sub. Няма начин да си спомните какви са тези аргументи. Например, ако изберете SheetActivate от списъка със събития за обект на работна книга, VBE записва следното подизявление:
Частна под работна книга_SheetActivate(ByVal Sh като обект)
В този случай Sh е аргументът, предаван на процедурата, и е променлива, която представлява листа в активираната работна книга.