Кожне діалогове вікно Excel, яке ви створюєте у VBA, зберігається у власному об’єкті UserForm — одне діалогове вікно на форму користувача. Ви створюєте та отримуєте доступ до цих форм користувача у редакторі Visual Basic.
Вставлення нової форми користувача
Вставте об’єкт UserForm, виконавши такі дії:
Активуйте VBE, натиснувши Alt+F11.
Виберіть книгу, яка буде містити форму користувача у вікні проекту.
Виберіть «Вставка» → «Форма користувача».
VBE вставляє новий об’єкт UserForm, який містить порожнє діалогове вікно.
Ось UserForm — порожнє діалогове вікно. Ваше завдання, якщо ви вирішите його прийняти, полягає в тому, щоб додати деякі елементи керування до цієї форми користувача.
Новий об’єкт UserForm.
Додавання елементів керування до форми користувача
Коли ви активуєте форму користувача, VBE відображає панель інструментів у плаваючому вікні. Ви використовуєте інструменти на панелі інструментів, щоб додати елементи керування до своєї форми користувача. Якщо з якихось причин панель інструментів не з’являється під час активації форми користувача, виберіть «Перегляд» → «Панель інструментів».
Щоб додати елемент керування, просто клацніть потрібний елемент керування на панелі інструментів і перетягніть його в діалогове вікно, щоб створити елемент керування. Після додавання елемента керування ви можете переміщати та змінювати його розмір за допомогою стандартних прийомів.
Ось список різних інструментів, а також їх можливості.
Контроль |
Що воно робить |
Етикетка |
Показує текст |
Текстове вікно |
Дозволяє користувачеві вводити текст |
ComboBox |
Відображає спадний список |
ListBox |
Відображає список елементів |
Прапорець |
Надає такі параметри, як увімкнення/вимкнення або так/ні |
OptionButton |
Дозволяє користувачеві вибрати один з кількох варіантів; використовуються в
групах з двох і більше |
ToggleButton |
Дозволяє користувачеві вмикати або вимикати кнопку |
Рамка |
Містить інші елементи керування |
CommandButton |
Кнопка, яку можна натиснути |
TabStrip |
Відображає вкладки |
Багатосторінковий |
Контейнер із вкладками для інших об’єктів |
Прокрутки |
Дозволяє користувачеві перетягувати панель, щоб встановити налаштування |
SpinButton |
Дозволяє користувачеві натиснути кнопку, щоб змінити значення |
Зображення |
Тримає зображення |
RefEdit |
Дозволяє користувачеві вибрати діапазон |
Зміна властивостей для елемента керування UserForm
Кожен елемент керування, який ви додаєте до UserForm, має властивості, які визначають, як він виглядає або поводиться. Крім того, сама UserForm має власний набір властивостей. Ви можете змінити ці властивості за допомогою вікна властивостей з влучною назвою. Це відображає вікно властивостей, коли вибрано елемент керування CommandButton.
Використовуйте вікна властивостей, щоб змінити властивості елементів керування UserForm.
При натисканні F4 з’являється вікно властивостей, а властивості, показані в цьому вікні, залежать від того, що вибрано. Якщо вибрати інший елемент керування, властивості зміняться на відповідні для цього елемента керування. Щоб приховати вікно Властивості та закрити його, натисніть кнопку Закрити в рядку заголовка. Натискання F4 завжди повертає його, коли вам це потрібно.
Властивості для елементів керування включають наступне:
-
Ім'я
-
Ширина
-
Висота
-
Значення
-
Заголовок
Кожен елемент керування має власний набір властивостей (хоча багато елементів керування мають деякі загальні властивості). Щоб змінити властивість за допомогою вікна властивостей, виконайте такі дії:
Переконайтеся, що у формі користувача вибрано правильний елемент керування.
Переконайтеся, що вікно Властивості видно.
У вікні Властивості клацніть властивість, яку потрібно змінити.
Внесіть зміни в правій частині вікна Властивості.
Якщо ви виберете саму форму користувача (не елемент керування у формі користувача), ви можете використовувати вікно властивостей, щоб налаштувати властивості форми користувача.
Перегляд вікна коду форми користувача
Кожен об’єкт UserForm має модуль Code, який містить код VBA (процедури обробника подій), який виконується, коли користувач працює з діалоговим вікном. Щоб переглянути модуль коду, натисніть F7. Вікно коду порожнє, доки ви не додасте деякі процедури. Натисніть Shift+F7, щоб повернутися до діалогового вікна.
Ось інший спосіб перемикатися між вікном коду та відображенням форми користувача: скористайтеся кнопками «Переглянути код» і «Переглянути об’єкт» у рядку заголовка вікна проекту. Або клацніть правою кнопкою миші форму користувача та виберіть Переглянути код. Якщо ви переглядаєте код, двічі клацніть ім’я форми користувача у вікні проекту, щоб повернутися до форми користувача.
Відображення форми користувача
Ви відображаєте UserForm за допомогою методу Show UserForm у процедурі VBA.
Макрос, який відображає діалогове вікно, має бути в модулі VBA, а не у вікні коду для форми користувача.
Наступна процедура відображає діалогове вікно з назвою UserForm1:
Sub ShowDialogBox()
UserForm1.Show
Сюди можна помістити інші твердження
Кінець суб
Коли Excel відображає діалогове вікно, макрос ShowDialogBox зупиняється, доки користувач не закриє діалогове вікно. Потім VBA виконує всі інші оператори процедури. У більшості випадків у вас більше не буде коду в процедурі. Як ви побачите пізніше, ви розміщуєте свої процедури обробки подій у вікні коду для UserForm. Ці процедури запускаються, коли користувач працює з елементами керування у формі користувача.
Використання інформації з форми користувача
VBE надає ім’я для кожного елемента керування, який ви додаєте до форми користувача. Ім'я елемента керування відповідає його властивості Name. Використовуйте це ім’я, щоб посилатися на певний елемент керування у вашому коді. Наприклад, якщо ви додаєте елемент керування CheckBox до UserForm з іменем UserForm1, елемент керування CheckBox має назву CheckBox1 за замовчуванням. Ви можете використовувати поле Властивості, щоб цей елемент керування відображався з прапорцем. Або ви можете написати код для цього:
UserForm1.CheckBox1.Value = True
У більшості випадків ви пишете код для UserForm в модулі коду UserForm. Якщо це так, ви можете опустити кваліфікатор об’єкта UserForm і написати заяву таким чином:
CheckBox1.Value = True
Ваш код VBA також може перевіряти різні властивості елементів керування та виконувати відповідні дії. Наступний оператор виконує макрос з ім’ям PrintReport, якщо встановлено прапорець (з назвою CheckBox1):
Якщо CheckBox1.Value = True, то викличте PrintReport
Зазвичай доцільно змінити назву за замовчуванням, яку VBE дав вашим елементам керування, на щось більш значуще.