Ця книга допоможе освоїти інтегроване середовище розробки VBA і навчитися програмувати в VBA з використання об'єктів, їх властивостей, методів і подій. Обговорювані прийоми програмування ілюструються прикладами, які можна відразу ж випробувати на практиці. Отримані знання ви зможете застосувати як для настроювання й удосконалення популярний офісних додатків, включаючи додатки Office XP, так і для створення власних додатків.
Книга розрахована на тих, хто збирається швидко і без зайвих зусиль навчитися програмувати для Windows, використовуючи VBA.
Книга: VBA для чайників
Завантаження і відображення форм
Завантаження і відображення форм
Процес відображення форми в VBA складається з двох кроків;
* Завантаження форми в пам'ять;
* Відображення форми на екрані.
Обидва цих кроку можна здійснити за допомогою одного оператора VBA, Але іноді корисно розділити ці кроки і використовувати для них окремі оператори.
Відображення форм здійснюється методом Show. Наприклад, якщо ім'ям форми є FormICa, то потрібно просто надрукувати:
Зауважте, що Show - це метод об'єкта Us er Form, тому метод додається до імені форми після точки-роздільник. Якщо зазначена форма ще не завантажена в пам'ять, метод Show спочатку завантажить форму, а потім зробить її видимої.
Щоб завантажити форму в пам'ять перед відображенням, використовуйте оператор Load. Load - це не метод, тому в даному випадку синтаксис інший (в порівнянні з використанням Show):
Навіщо завантажувати форму, не відображаючи її? Завантаження форми відбувається набагато довше, ніж її відображення. Програма будь-якої складності виконує чимало процедур ініціалізації (типу читання даних з файлів, обчислення початкових значень змінних і створення об'єктів), тому при запуску програми деяка затримка вельми звична. Якщо в цей час ви завантажте і свої форми, користувач поставиться до затримки прихильніше, ніж до такої ж затримки під час роботи програми. Єдиний недолік попереднього завантаження форм полягає в тому, що для них потрібна пам'ять, яка могла б використовуватися для інших цілей.
Припустимо, наприклад, що в заголовку форми повинні відображатися поточні дата і час. Ви не можете передбачити, коли саме користувач запустить вашу програму, тому вам доведеться доручити VBA вказати дату і час за вас. Це можна зробити, наприклад, так:
Аналогічно можна змусити напис або текстове поле форми відображати інформацію про те, що в даний момент виділено в VBA-додатку. На рис. 10.24 показано те, що можна побачити в результаті виконання наступної процедури VBA, пов'язаної з відповідною формою в Visio:
Dim ItemCount As integer, Message As String
Message = "Виділено об'єктів:" CStr (Items) S "."
Зверніть увагу на рядок програмного коду, в якій змінюється властивість елемента управління " 'напис" у формі:
Приклад з попереднього розділу демонструє один із способів внесення змін до форми перед її відображенням на екрані - з стандартної процедури звичайного модуля.
Але, як то кажуть, здерти з капусти листя можна багатьма способами. У нашому випадку є варіанти-події Initialize (ініціалізація) і Activate (Активізація) форми.
Програмний код, поміщений в процедури обробки цих подій, виконується автоматично, коли трапляються відповідні події. Вибрати між цими подіями допоможуть наступні правила.
* Використовуйте подія Initialize для програмного коду, який повинен виконуватися тільки при першому завантаженні форми.
* Використовуйте подія Activate для програмного коду, який повинен виконуватися при кожному відображенні форми на екрані (включаючи і перше відображення).
Створення програмного коду для процедур обробки подій обговорюється нижче, в розділі "Головні події".
Використовуйте метод Hide (Приховати), щоб закрити форму і таким чином отримати можливість повернутися в документ VBA-додатки або активізувати іншу форму. Це робиться наступним оператором:
Правда, метод Hide можна використовувати не в будь-якому місці програми. Якщо форма модальна, метод Hide потрібно помістити в процедуру обробки події, що належить самій формі.
Як згадувалося раніше в цій главі, якщо відкрита модальна форма, виконуватися можуть тільки процедури, пов'язані з цією формою.
І до речі, при виклику методу Hide в процедурі обробки події, що належить цій формі, ім'я форми вказувати не потрібно - VBA достатньо кмітливий, щоб зрозуміти, що в даному випадку метод Hide належить саме цій формі. Тому в процедурі обробки події, що належить формі, можна просто надрукувати Hide і ця форма зникне.
Найчастіше оператор Hide розміщують в кінці процедури обробки події Click (Клацання) для КНОПОК ОК, Скасування або Закрити. Приклади ви знайдете нижче, в розділах
"Додавання кнопок Закрити і Скасування" і "Програмування кнопки ОК".
Прихована форма не видаляється з пам'яті, ви зможете відобразити її знову без зайвих затримок за допомогою методу Show в будь-який час.
Якщо відомо, що форма більше в програмі не знадобиться, знищіть її зовсім, видаливши з пам'яті. У невеликих VBA-програмах в цьому немає необхідності, але коли ваші програми стануть великими і пам'ять буде як нагорода, знищення непотрібних форм набуде очевидний сенс.