Доброго вам дня! Сьогодні ми поговоримо про роботу з формами VBA, а також розглянемо практично поняття фільтрів і прапорів в VBA.
Форми в VBA
Спочатку трохи теорії. Форма - це багато в чому просто контейнер для зберігання інших елементів управління. Свого роду, посередник між користувачем і програмістом. Форма в VBA потрібна для того, щоб обмежити користувача нажиманием певних кнопок і не допустити зайвого втручання в код програми.
Трохи основних властивостей об'єкта Форма (UserForm):
Name - це властивість містить ім'я форми, або, точніше сказати, ім'я об'єкта. Потрібно розуміти, що дане значення є тільки в тілі програми і ніяк не впливає на кінцевий результат.
BackColor - містить колір фону.
BorderColor - колір рамки.
Caption - властивість визначає заголовок форми, фактично, це той же заголовок вікна програми. За замовчуванням, ця властивість містить те ж значення, що і властивість Name.
Enabled - приймає логічне True або False, і визначає, чи доступна форма.
ShowModal - може приймати тільки логічні значення. True - поки не буде закрита поточна форма, інша форма або повернення в документ будуть недоступні.
Font - визначає шрифт.
ForeColor - визначає колір переднього плану форми, наприклад, колір тексту.
Прапори і фільтри
Прапори - також звані checkbox в програмуванні. Можуть приймати тільки логічні значення. Зазвичай прапори ставлять навпроти питань (як відповідь Так / Ні) або функцій (виконувати / не виконувати).
Фільтри - в двох словах, процес перевірки на будь-яке умова.
Тепер розглянемо приклад, що відображає в собі роботу з формами, з прапорами і фільтрами в VBA.
Дана таблиця 4х5, в кожному осередку якої записані числа, "+". "-". слова, що починаються з великих і маленьких літер і символи, що не належать до алфавітом. Необхідно створити призначену для користувача форму з набором різних варіантів фільтрів.
Виглядає таблиця приблизно так:
створюємо форми
У коді дуже багато команд настройки і перевірки саме для форми, щоб виключити помилки в результаті. Ми розберемо лише основні алгоритми, весь код ви знайдете в исходнике нижче.
Під кнопку розрахунку йде такий код:
За допомогою даного циклу ми знаходимо все CheckBox і записуємо їх значення в масив, щоб нам було зручніше працювати.
Так як код дуже громіздкий, то настійно рекомендую вам завантажити вихідні нижче.
Спочатку очищаємо форму. Потім прописуємо в циклі умови в залежності від «піднятих» прапорів. Команди pr_chislo. pr_plus. pr_text викликають відповідні булеві функції, які будуть в исходнике нижче.
На основі повертаються від функцій значень побудуємо таблицю. Та осередок, яка не пройшла фільтрацію, записується як
Записуємо наш масив в другу форму.
На цьому ми закінчимо.