Всеки диалогов прозорец на Excel, който създавате във VBA, се съхранява в собствен обект UserForm - един диалогов прозорец на UserForm. Вие създавате и осъществявате достъп до тези потребителски форми в редактора на Visual Basic.
Вмъкване на нов потребителски формуляр
Вмъкнете обект на UserForm, като следвате тези стъпки:
Активирайте VBE, като натиснете Alt+F11.
Изберете работната книга, която ще държи потребителския формуляр в прозореца на проекта.
Изберете Вмъкване → Потребителски формуляр.
VBE вмъква нов обект UserForm, който съдържа празен диалогов прозорец.
Ето потребителска форма — празен диалогов прозорец. Вашата задача, ако решите да го приемете, е да добавите някои контроли към този потребителски формуляр.
Нов обект UserForm.
Добавяне на контроли към потребителски формуляр
Когато активирате UserForm, VBE показва Toolbox в плаващ прозорец. Вие използвате инструментите в кутията с инструменти, за да добавите контроли към вашия потребителски формуляр. Ако по някаква причина кутията с инструменти не се появи, когато активирате своя потребителски формуляр, изберете Изглед → Кутия с инструменти.
За да добавите контрола, просто щракнете върху желаната контрола в кутията с инструменти и я плъзнете в диалоговия прозорец, за да създадете контролата. След като добавите контрола, можете да я премествате и преоразмерявате, като използвате стандартни техники.
Ето списък на различните инструменти, както и техните възможности.
Контрол |
Какво прави |
Етикет |
Показва текст |
Текстово поле |
Позволява на потребителя да въвежда текст |
ComboBox |
Показва падащ списък |
ListBox |
Показва списък с елементи |
CheckBox |
Предоставя опции като включване/изключване или да/не |
OptionButton |
Позволява на потребителя да избере една от няколко опции; използвани в
групи от двама или повече |
ToggleButton |
Позволява на потребителя да включва или изключва бутон |
Кадър |
Съдържа други контроли |
CommandButton |
Бутон с възможност за щракване |
TabStrip |
Показва раздели |
MultiPage |
Контейнер с раздели за други обекти |
Плъзгач |
Позволява на потребителя да плъзга лента, за да установи настройка |
SpinButton |
Позволява на потребителя да щракне върху бутон, за да промени стойност |
Образ |
Съдържа изображение |
RefEdit |
Позволява на потребителя да избере диапазон |
Промяна на свойствата за контрола на UserForm
Всяка контрола, която добавяте към UserForm, има свойства, които определят как изглежда или се държи контролата. Освен това самият UserForm има свой собствен набор от свойства. Можете да промените тези свойства с подходящо наречения прозорец Properties. Това показва прозореца Properties, когато е избрана контрола CommandButton.
Използвайте прозорците на свойствата, за да промените свойствата на контролите на UserForm.
Прозорецът Properties се появява, когато натиснете F4, а свойствата, показани в този прозорец, зависят от това какво е избрано. Ако изберете друга контрола, свойствата се променят на подходящи за тази контрола. За да скриете прозореца Properties и да го премахнете от пътя, щракнете върху бутона Close в заглавната лента. Натискането на F4 винаги го връща, когато имате нужда от него.
Свойствата за контроли включват следното:
-
име
-
широчина
-
Височина
-
Стойност
-
Надпис
Всяка контрола има свой собствен набор от свойства (въпреки че много контроли имат някои общи свойства). За да промените свойство с помощта на прозореца Properties, следвайте тези стъпки:
Уверете се, че правилната контрола е избрана в потребителския формуляр.
Уверете се, че прозорецът Properties е видим.
В прозореца Свойства щракнете върху свойството, което искате да промените.
Направете промяната в дясната част на прозореца Properties.
Ако изберете самия UserForm (не контрола в UserForm), можете да използвате прозореца Properties, за да коригирате свойствата на UserForm.
Преглед на прозореца с код на потребителската форма
Всеки обект на UserForm има модул Code, който съдържа VBA кода (процедурите за обработка на събития), който се изпълнява, когато потребителят работи с диалоговия прозорец. За да видите кодовия модул, натиснете F7. Прозорецът Code е празен, докато не добавите някои процедури. Натиснете Shift+F7, за да се върнете към диалоговия прозорец.
Ето още един начин за превключване между прозореца на кода и дисплея на потребителския формуляр: Използвайте бутоните Преглед на код и Преглед на обект в заглавната лента на прозореца на проекта. Или щракнете с десния бутон върху потребителския формуляр и изберете Преглед на кода. Ако преглеждате код, щракнете двукратно върху името на UserForm в прозореца на проекта, за да се върнете към UserForm.
Показване на потребителски формуляр
Показвате UserForm, като използвате метода Show на UserForm във VBA процедура.
Макросът, който показва диалоговия прозорец, трябва да е във VBA модул, а не в прозореца на кода за UserForm.
Следната процедура показва диалоговия прозорец с име UserForm1:
Sub ShowDialogBox()
UserForm1.Show
„ Други изявления могат да отидат тук
Край под
Когато Excel покаже диалоговия прозорец, макросът ShowDialogBox спира, докато потребителят не затвори диалоговия прозорец. След това VBA изпълнява всички останали оператори в процедурата. През повечето време няма да имате повече код в процедурата. Както виждате по-късно, вие поставяте вашите процедури за манипулиране на събития в прозореца с код за UserForm. Тези процедури започват, когато потребителят работи с контролите на UserForm.
Използване на информация от потребителски формуляр
VBE предоставя име за всяка контрола, която добавяте към потребителски формуляр. Името на контролата съответства на нейното свойство Name. Използвайте това име, за да се позовавате на конкретна контрола във вашия код. Например, ако добавите контрола CheckBox към UserForm с име UserForm1, контролата CheckBox се нарича CheckBox1 по подразбиране. Можете да използвате полето Properties, за да направите тази контрола да се показва с отметка. Или можете да напишете код, за да го направите:
UserForm1.CheckBox1.Value = Вярно
През повечето време вие пишете кода за UserForm в кодовия модул на UserForm. Ако случаят е такъв, можете да пропуснете квалификатора на обекта UserForm и да напишете изявлението по следния начин:
CheckBox1.Value = Вярно
Вашият VBA код може също да проверява различни свойства на контролите и да предприема подходящи действия. Следният оператор изпълнява макрос с име PrintReport, ако квадратчето за отметка (с име CheckBox1) е отметнато:
Ако CheckBox1.Value = True, тогава извикайте PrintReport
Обикновено е добра идея да промените името по подразбиране, което VBE е дал на вашите контроли, на нещо по-смислено.