У VBA можна створити файл Список де користувач може вибрати один із перерахованих варіантів. Listbox часто використовується у формах користувача, але також може використовуватися у робочому аркуші. У цьому посібнику ви дізнаєтесь, як створювати, заповнювати та видаляти Listbox. Ви також побачите, як отримати вибір користувача у VBA та використовувати його у коді.
Якщо ви хочете дізнатися, як створити ComboBox, натисніть тут: VBA ComboBox
Якщо ви хочете дізнатися, як створити прапорець, натисніть тут: Прапорець VBA
Створіть Listbox
Щоб вставити Listbox у аркуш, вам потрібно перейти до Вкладка розробник, клацніть Вставити і в розділі Елементи керування ActiveX виберіть Список:
Зображення 1. Вставте Listbox у аркуш
Вибравши вставлений список, ви можете натиснути на Властивості під Вкладка розробник:
Зображення 2. Змінити властивості Listbox
Тут ви можете встановити різні властивості Listbox. Для початку ми змінили атрибут Назва до lstListBox. Тепер ми можемо використовувати Listbox з такою назвою у коді VBA.
Заповніть Listbox у коді VBA
По -перше, нам потрібно заповнити значення Listbox. У більшості випадків під час відкриття книги потрібно заповнювати Listbox. Через це нам потрібно ввести код для заповнення Listbox в об'єкті Робочий зошит, процедура Відчинено. Ця процедура виконується кожного разу, коли користувач відкриває книгу. Ось код:
123456789 | З Sheet1.lstListBox.Додавання "Джон".Додаток "Майкл".AddItem "Дженніфер".Додавання "Лілі".Додаток "Роберт"Закінчити з |
Як ви можете бачити на зображенні 3, ми заповнили наш список з 5 іменами (Джон, Майкл, Дженніфер, Ліллі та Роберт):
Зображення 3. Заповніть Listbox у VBA
Заповніть поле зі списком із діапазону клітинок
Інший можливий спосіб заповнення Listbox - це дозволити користувачеві це зробити. Listbox можна зв'язати з діапазоном клітинок. Тому кожного разу, коли користувач вводить нове значення в діапазоні комірок, Listbox оновлюватиметься цим значенням.
Якщо ви хочете активувати це, перейдіть до Властивості ListBox і встановіть атрибут ListFillRange:
Зображення 4. Заповніть Listbox з діапазону комірок
Ми зв’язали наш Listbox з діапазоном E2: E5, де ми розмістили потрібні імена (Натан, Гаррі, Джордж, Роберта). В результаті тепер Listbox заповнюється цими іменами.
Отримайте вибраний елемент Listbox у VBA
Метою Listbox є вибір користувачів. Для того, щоб отримати значення, вибране користувачем, потрібно скористатися цим кодом:
123 | Затемнити strSelectedItem як варіантstrSelectedItem = Sheet1.lstListBox.Value |
Вибір користувачів є в атрибуті Цінність з Sheet1.lstListbox об'єкт. Це значення присвоюється змінній strSelectedItem:
Зображення 5. Отримайте вибране значення з Listbox у VBA
Ми вибрали Гаррі у Listbox та виконав процедуру. Як ви можете бачити на зображенні 5, значення strSelectedItem є Гаррі, це значення, яке ми вибрали. Крім того, ви можете обробити цю змінну в коді.
Очистіть поле зі списком
Щоб очистити Listbox у VBA, потрібно скористатися Ясно метод Sheet1.lstListBox об'єкт. Він видалить усі елементи зі списку. Ось код:
1 | Sheet1.lstListBox.Clear |
Коли ми виконуємо код, ми отримуємо порожній Listbox:
Зображення 6. Очистіть поле зі списком
Використовуйте Listbox у формі користувача
Як ми вже згадували, Listbox найчастіше використовується у формах користувача. Щоб пояснити, як це можна зробити, спочатку ми вставимо Userform. У редакторі VBA клацніть правою кнопкою миші назву модуля, клацніть Вставити і виберіть UserForm:
Зображення 7. Вставте форму користувача
Щоб відобразити елементи керування для вставлення, потрібно ввімкнути Набір інструментів. Для цього натисніть наНабір інструментів на панелі інструментів. Після цього ви отримаєте вікна з усіма доступними елементами управління. Ви можете натиснути на ListBox створити його у формі користувача.
Зображення 8. Вставте Listbox у Userform
Ми назвемо ComboBox cmbComboBox. Щоб заповнити його значеннями, нам потрібно вставити наступний код у метод Ініціалізувати об'єкта UserForm:
12345678910111213 | Приватний підкористувач UserForm_Initialize ()За допомогою UserForm1.lstListBox.Додавання "Джон".Додаток "Майкл".AddItem "Дженніфер".Додавання "Лілі".Додаток "Роберт"Закінчити зEnd Sub |
Цей код спрацьовує кожного разу, коли користувач запускає Userform і заповнює Listbox такими 5 іменами:
Зображення 9. Список зі значеннями у формі користувача
Якщо ви хочете отримати вибране значення з ComboBox, вам потрібно використовувати таку ж логіку для Combobox у робочому аркуші, що пояснюється раніше у статті.