Клас listbox - створення простого списку в vba
Елемент управління ListBox vba дозволяє додавати список з даними на форму. На відміну від комбінованого списку ComboBox, ListBox має наступні відмінності:
- Тут не можна вводити власні значення, а лише милуватися тими, що були додані спочатку
- Є можливість вибирати відразу кілька значень.
ColumnCount - дозволяє задати кількість стовпчиків у списку
ColumnHeads - дозволяє задати режим відображення заголовків для колонок: true - заголовки відображаються, false - заголовки не відображаються. Дана властивість актуально при використанні компонента vba ListBox в Exel.
ColumnWidths - властивість визначає ширину колонок, наприклад, "20; 30; 15". Як бачимо, значення строкове, тут ми задали ширину для трьох стовпчиків, якщо ми поставимо нуль, то стовпчик не буде доступний широкому.
TextColumn - містить ціле значення, що визначає, вміст якого шпальти має повертати властивість Text.
BoundColumn - містить ціле значення, що визначає, вміст якого шпальти має повертати властивість Value.
Якщо для TextColumn і BoundColumn прописати 0, то буде повертатися номер обраного значення в списку об'єкта ListBox VBA мови.
Якщо вам треба вивести значення для заданого стовпчика, то треба просто прописати властивість Column задавши після нього в круглих дужках числовий індекс. Як все це працює, я покажу на прикладі далі.
MultiSelect - дозволяє визначити, як відбувається вибір елементів: 0 - fmMultuSelectSingle (тільки одиночний вибір), 1 - fmMultuSelectMulti (можливість вибирати кілька елементів клацанням миші або за допомогою натискання клавіші "пробіл"), 2 - fmMultuSelectExtended (можливість вибирати кілька елементів за допомогою натискання клавіші " Shift ").
VBA Excel ListBox
Тепер треба попрактикуватися, напишемо приклад використання компонента VBA ListBox в Excel. Але перш за все, треба заповнити чотири стовпчики різними даними. Я створив книгу в Excel і заповнив перші чотири стовпчики такими даними:
Добре, таблицю в Excel ми зробили, тепер можна приступити до роботи з проектом. І так, додайте в проект новий модуль і форму.
Зовнішній вигляд форми ви можете побачити на малюнку. На формі повинні бути розташовані два елементи управління vba excel ListBox, три елементи TextBox і одна кнопка (CommandButton). Перший список буде містити чотири стовпці, в яких буде відображатися вміст перших п'ятдесяти осередків для A, B, C і D. Другий список буде містити також всі 4 стовпчика, але відображатися буде тільки перший. При натисканні на кнопку, відбудеться зчитування обраного елемента в другому списку, і в текстових полях відобразиться вміст для другої, третьої і четвертої колонки.
Щоб не плутати все ще більше, приступимо до практики:
UserForm_Initialize - настройка даних при ініціалізації форми (UserForm). Тут відбувається настройка властивостей для першого і другого об'єкта ListBox vba мови:
ListBox1 - буде відображатися заголовок, компонент містить чотири колонки, їх ширина: 60; 80; 60; 30. Дані в список будуть додаватися з діапазону A2: D50, присутня можливість виділяти тільки один елемент у списку.
ListBox2 - тут практично все те ж саме, що і для першого списку, тільки ширина колонок: 60; 0; 0; 0 - тобто, буде відображатися вміст тільки першої колонки.
CommandButton1_Click - тут відбувається обробка клацання по кнопці, а саме: відбувається перевірка, вибрано чи щось у другому списку (vba excel ListBox), якщо так, то на початку текстове поле запишеться вміст з другої колонки, в другу - з третьої і в третє - з четвертої.