Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
DIC_VBA.doc
Скачиваний:
2
Добавлен:
11.08.2019
Размер:
685.06 Кб
Скачать

Форми, елементи управління і події

1. Створення форм і найважливіші властивості і методи форм

Найчастіше для надання користувачу графічного інтерфейсу користуються формами VBA. В принципі, багато елементів управління можна вставляти безпосередньо на сторінку документа (для цього використовуються панелі інструментів Форми та Елементи управління), однак класичний спосіб - це застосування форми. Незалежно від того, використовується форма або елементи керування розміщуються безпосередньо в документі, набір елементів управління і прийоми роботи з ними однакові.

Зазвичай форма запускається при відкритті користувачем документа. Користувач виконує на формі якісь дії із введення або вибору інформації (наприклад, вибирається значення в списку, встановлює значення для прапорців і перемикачів і т. д.), а потім, як правило, натискає кнопку на цій формі , і введена інформація передається в базу даних, відправляється по електронній пошті, записується в файл для роздруку і т. д.

Створити форму дуже просто: для цього достатньо в редакторі Visual Basic клацнути правою кнопкою миші на проекті (тобто на імені документа) у вікні Project Explorer і в контекстному меню вибрати Insert | UserForm. Відкриється вікно дизайнера форм (Form designer), в якому буде представлено пусте сіре вікно форми (за замовчуванням вона називається UserForm1) і поруч Toolbox - панель з набором елементів управління.

Якщо у вас включений показ вікна властивостей Properties (він включається по клавіші <F4>), то в цьому вікні будуть представлені властивості форми. Перехід до редактору коду для цієї форми (за умовчанням відкривається подія Click) вивиконується по клавіші <F7>, повернення назад у вікно дизайнера форм - по <Shift> + <F7>.

Деякі найважливіші властивості форм (крім ShowModal всі вони застосуй-ми і для інших елементів управління) наведені далі.

􀂈 Name - це властивість визначає ім'я форми. Користувач програми, швидше за все, його ніколи не побачить. Ім'я форми використовується тільки програмістом в коді для цієї форми (і у вікнах редактора Visual Basic). Після створення форми її ім'я, запропоноване за замовчуванням (UserForm1), рекомендується замінити на щось більш значиме, щоб було простіше орієнтуватися в програмі (це стосується всіх елементів управління).

􀂈 Caption - визначає заголовок форми (за замовчуванням збігається з іменем форми). Рекомендується ввести рядок, який буде нагадувати користувачеві про призначення форми (наприклад, "Вибір типу звіту").

􀂈 Enabled - якщо це властивість встановлено в False, користувач не зможе працювати з формою. Використовується для тимчасового відключення форми, наприклад, поки користувач не забезпечить деякі умови для її роботи.

􀂈 ShowModal - якщо властивість встановлено в True (за замовчуванням), то користувач не може перейти до інших форм або повернутися в документ, поки не закриє цю форму (так званий "модальний" режим роботи).

Найважливіші методи форм перераховані в наступному списку.

􀂈 В процесі редагування форми (з вікна редактора Visual Basic) її можна запускати після натискання клавіші <F5>.Після того, як форма буде готова, потрібно забезпечити її запуск в документі. Для запуску форми потрібно скористатися методом Show ():

UserForm1.Show

Якщо форма вже була завантажена в пам'ять, вона просто стане видимою, якщо ні - то буде автоматично завантажена (відбудеться подія Load). Сам цей метод можна викликати, наприклад:

• зі звичайного макросу, прив'язаного до кнопки або клавіатурної комбінації;

• з макросу, що запускається автогматично (макросу з назвою AutoExec для Word);

• з коду для елемента управління, розташованого в самому документі (наприклад, CommandButton) або на іншій формі (для переходу між формами);

• помістити його в обробник події Open для документа Word або книги Excel, щоб форма відкривалася автоматично при відкритті документа.

􀂈 Після того, як користувач введе або вибере потрібні дані на формі і натисне необхідну кнопку, форму необхідно прибрати. Для цього можна скористатися двома способами:

• заховати форму (використовувати метод Hide ()), наприклад:

UserForm1.Hide

Форма буде прибрана з екрана, але залишиться в пам'яті. Потім при допомозі методу Show () можна буде знову її викликати в тому ж стані, в якому вона була на момент "ховання", а можна, наприклад, поки вона захована, програмно змінювати її і розташовані на ній елементи управління. Остаточно форма віддалиться з пам'яті при закритті документу;

• якщо форма більше точно не буде потрібна, можна її видалити з пам'яті за допомогою команди Unload:

Unload UserForm1

Найважливіша концепція VBA - події. Подія (event) - це те, що відбувається з програмою і може бути нею розпізнано. Наприклад, до подій належать клацання мишею, натискання на клавіші, відкриття та закриття форм, переміщення форми по екрану і т. д. VBA побудований таким чином, щоб можна було створювати на ньому програми, керовані подіями (event-driven). Найважливіші події форм наведені далі.

􀂈 Initialize - відбувається при підготовці форми до відкриття (появі перед користувачем). Зазвичай в обробник для цієї події поміщає-ся код, пов'язаний з відкриттям з'єднань з базою даних, настроюванням елементів управління на формі, присвоєнням значень за замовчуванням і т. д.

􀂈 Click (вибирається за замовчуванням) і DblClick - реакція на одиночне і подвійне клацання миші відповідно. Для форми ці події використовуються не так часто. Зазвичай обробники клацань застосовуються для кнопок (елементів управління CommandButton).

􀂈 Error - це подія використовується при виникненні помилки у формі, надаючи користувачеві можливість виправити зроблену ним помилку.

􀂈 Terminate - використовується при нормальному завершенні роботи форми і вивантаження її з пам'яті (наприклад, за командою Unload). Зазвичай застосовується для розриву відкритих з'єднань з базою даних, звільнення ресурсів, протоколювання і т. д. Якщо робота форми завершується аварійно (наприклад, додаток, що запустив форму видав команду End), то ця подія не виникає.

Оскільки форма - це багато в чому просто контейнер для зберігання інших елементів управління, головне її подія - Initialize. Всі інші події зазвичай використовуються не для форми, а для розташованих на ній елементів управління.

Елемент управління - це спеціалізований об'єкт, який можна розміщувати на формах VBA (або безпосередньо в документах) і який використовується для організації взаємодії з користувачем. У VBA є як стандартні елементи управління (CommandButton, CheckBox, OptionButton), так і нестандартні (будь-які інші, які є на комп'ютері, наприклад, Microsoft Web Browser, що представляє Internet Explorer, елемент управління Calendar і т. д.). Елементи управління реагують на події, які генерує користувач (натискання на кнопку, введення значення, переміщення повзунка і т. п.).

Додавання елементів керування на форму найчастіше проводиться з дизайнера форм за допомогою панелі Toolbox. Для цього необхідно вибрати елемент управління на Toolbox і перетягнути його на форму або, що більш зручно, виділити елемент керування в Toolbox, а потім на формі виділити ту область екрану, яку буде займати цей елемент керування.

Додавання елементів керування можна здійснювати і програмним способом (за допомогою методу Add () колекції Controls), однак при цьому доведеться вказувати величезну кількість властивостей створюваного елементу управління, що не дуже зручно.

Елемент управління Label

Це найпростіший елемент управління. Напис (Label) - це просто об-ласть форми, в якій виводиться якийсь текст. Головна властивість елемента керування Label - це Caption, той текст, який буде виводитися на формі. Більша частина решти властивостей відноситься до форматування цього тексту або налаштування зовнішнього вигляду цього елемента керування.

Елемент управління TextBox

Текстове поле (TextBox) - один з найбільш часто використовуваних елементів управління. Текстове поле використовується:

􀂈 для прийому будь-яких текстових даних, що вводяться користувачем (на-приклад, для відправлення поштою, для занесення в базу даних і т. д.);

􀂈 для виведення користувачеві текстових даних з можливістю їх редактування (з бази даних, листа Excel і т. д.);

􀂈 для виведення користувачеві текстових даних з можливістю копіювання та друку, але без можливості зміни (класичний приклад - текст ліцензійної угоди).

Далі наведено деякі важливі властивості цього елемента керування.

􀂈 Value (або Text, ці дві властивості для текстового поля ідентичні) - то текстове значення, яке міститься в цьому полі. Використовується для за-несення вихідного значення і для прийому значення, введеного користувачем, в стрічкову змінну.

􀂈 ControlSource - посилання на джерело текстових даних для поля. Може посилатися, наприклад, на комірку в Excel, на поле в об'єкті Recordset і т. д. При зміні користувачем даних в текстовому полі автоматично зміниться значення на джерелі, визначеному в ControlSource.

􀂈 ControlTipText - текст підказки, яка з'являється, коли користувач наводить покажчик миші на елемент керування. Рекомендується до заповнення для всіх елементів управління (для самої форми це властивість не передбачена).

􀂈 Enabled - якщо встановити в False, то текст в поле стане сірим і з вмістимим поля нічого не можна буде зробити (ні ввести текст, ні виділити, ні видалити). Зазвичай ця властивість використовується, щоб показати користувачеві, що цей елемент управління відключений до виконання деяких умов (це відноситься до всіх елементів управління).

􀂈 Locked - поле буде виглядати як зазвичай, користувач зможе виокремляти і копіювати дані з нього, але не змінювати їх. Використовується для показу незмінних даних типу ліцензійних угод, згенерує-ванних значень і т. д.

􀂈 MaxLength - максимальна довжина значення, яке можна ввести в поле. Іноді можна використовувати властивість AutoTab - при досягненні певної кількості символів управління автоматично передається іншому елементу управління.

􀂈 MultiLine - визначає, чи можна використовувати в текстовому полі декілька рядків або тільки один. Якщо потрібно текстове поле для прийняття одного короткого значення, подумайте, чи не можна замість елемента керування обійтися функцією InputBox ().

􀂈 PasswordChar - дозволяє вказати, за яким символом будуть "ховатися" введені користувачем значення. Використовується, звичайно, при введенні пароля.

􀂈 ScrollBars - визначає, чи будуть показані горизонтальна і вертикальна смуги прокрутки (в будь-якому поєднанні). Якщо текст буде довгим, без них не обійтися.

􀂈 WordWrap - настійно рекомендується включати в тих ситуаціях, коли значення MultiLine встановлено в True. У цьому випадку буде здійснюватися автоматичний перехід на новий рядок при досягненні межі текстового поля.

Елемент управління ComboBox

Комбінований список (ComboBox) також використовується дуже часто. Цей елемент управління дозволяє користувачеві вибирати "готові" значення зі списку, так і вводити значення самостійно (хоча це можна заборонити). Зазвичай ComboBox використовується у двох ситуаціях:

􀂈 коли користувачеві необхідно вибрати одне або кілька значень зі списку розміром від 4-х до декількох десятків позицій. Якщо позицій менше, то простіше використовувати перемикач (OptionButton), якщо більше - то орієнтуватися в списку стає незручно і необхідно використовувати спеціальні прийоми, коли користувач вводить перші літери потрібного слова і в списку залишаються лише значення, які починаються з цих літер ;

􀂈 коли список позицій для вибору необхідно формувати динамічно на підставі даних з джерела (бази даних, листа Excel і т. д.).

На жаль, через вікно властивостей заповнити список позиціями не виходить - для цієї мети доведеться використовувати спеціальний метод AddItem (). Зазвичай він поміщається в обробник події Initialize для форми. Застосування його може виглядати так:

Private Sub UserForm_Initialize ()

ComboBox1.AddItem "Санкт-Петербург"

ComboBox1.AddItem "Ленінградська область"

ComboBox1.AddItem "Москва"

ComboBox1.AddItem "Московська область"

End Sub

Другий параметр varIndex (необов'язковий) цього методу може використовуватися для визначення положення елемента в списку, але він не може перевищувати значення властивості ListCount і тому для початкового завантаження ComboBox не підходить.

Найважливіші властивості комбінованого списку представлені далі.

􀂈 ColumnCount, ColumnWidth, BoundColumn, ColumnHeads, RowSource - властивості, які застосовуються при роботі зі списками з декількох стовпців. Користувачі не люблять такі списки, і тому до використання вони не рекомендуються (набагато простіше зробити кілька комбінованих списків).

􀂈 MatchEntry - визначає, чи будуть при введенні користувачем перших цією-волів значення вибиратися відповідні позиції у списку. Можливість дуже зручна, рекомендується зберегти значення, яке використовується за замовчуванням.

􀂈 MatchRequired - визначає, чи дозволяється користувачеві вводити те значення, якого немає в списку. За замовчуванням False, тобто дозволено.

􀂈 Value (або Text) - дозволяє програмним способом встановити вибране значення в списку або отримати в змінну вибране або введене користувачем значення.

Решта властивості (AutoSize, Enabled, Locked, ControlText, ControlTipText, MaxLength) застосовуються точно так само, як і для TextBox. Головна подія для комбінованого списку - Change, як і для TextBox. Зазвичай в обробнику цієї події перевіряються введені користувачем значення, ці значення переносяться в текстове поле або в ListBox

Елемент управління ListBox

Елемент управління ListBox дуже схожий на комбінований список, але застосовується набагато рідше з двох причин:

􀂈 в ньому не можна відкрити список значень по кнопці. Всі значення видно зразу в полі, аналогічному текстовому, і тому велика кількість позицій в нього вмістити важко;

􀂈 користувач не може вводити свої значення - тільки вибирати з го-тових.

Але у цього елемента управління є й переваги: в ньому користувач може вибирати не одне значення, як в ComboBox, а декілька. Зазвичай ListBox використовується:

􀂈 як проміжне засіб відображення введених або обраних користувачем через ComboBox значень (або будь-яких інших списків, на-приклад, для списку вибраних файлів);

􀂈 як засіб редагування списку значень, сформованих вишеука-занним чином або отриманих з бази даних (для цього можна поруч з ListBox розмістити кнопки Видалити або змінити).

Основні властивості, методи і події у ListBox - ті ж, що і у ComboBox. Головна відмінність - це властивість MultiSelect, яке дозволяє користувачу вибирати кілька значень. За замовчуванням ця властивість відключена.

Елементи управління CheckBox і ToggleButton

Прапорці (CheckBox) (користувачі часто називають їх "галками" або "пташка-ми") і кнопки з фіксацією (ToggleButton) використовуються для вибору невзаємовикчних варіантів (якщо цих варіантів небагато). Для CheckBox передбачено три головні властивості.

􀂈 Caption - напис праворуч від прапорця, яка пояснює, що вибирається цим прапорцем.

􀂈 TripleState - якщо це властивість встановлено в False (за замовчуванням), то прапорець може приймати тільки два стани: встановлено чи ні. Якщо для TripleState встановити значення True, то з'являється третє значення Null, коли встановлений "сірий" прапорець. Таке значення часто використовує-ся, наприклад, при виборі компонентів програми при установці, коли обрані не всі компоненти, а лише деякі.

􀂈 Value - сам стан прапорця. Може приймати значення True (прапорець встановлено), False (знятий) і Null - "сірий" прапорець (коли властивість TripleState встановлено в True). Головна подія елемента CheckBox - Change.

ToggleButton виглядає як кнопка, яка після клацання на ній залишається "натиснутою", а при повторному натисканні відключається. У неї можуть бути ті ж два (або три, відповідно до властивістю TripleState) стани, що й у CheckBox. Властивості і методи - ті ж самі. Єдина відмінність - в сприйнятті їх користувачем. Зазвичай ToggleButton сприймається користувачем як перехід в деякий режим або початок виконання тривалої дії.

Елементи управління OptionButton і Frame

Якщо CheckBox призначений для вибору невзаємовиключних варіантів, то перемикач (OptionButton) використовується як раз для вибору варіанта в ситуації "або / або"

Класичний приклад, за допомогою якого можна проілюструвати роботу OptionButton, - вибір радіостанції на радіоприймачі: відразу дві радіостанції слухати не можна (тому іноді цей елемент управління називають RadioButton). Головних властивостей у цього елемента керування дві.

􀂈 Caption - напис для перемикача.

􀂈 Value - встановлено перемикач чи ні (тільки два стани - True або False).

Головна подія теж стандартне - Change.

Звичайно, використовувати один перемикач безглуздо. Вибір повинен надаватися хоча б з двох варіантів, і при виборі одного з них інший автоматично знімається. Проте в деяких ситуаціях нам необхідно вибрати з декількох наборів варіантів (наприклад, звіт за місяць/квартал/рік, тип звіту, філія і т. д.). Рішення просте - перемикачі потрібно згрупувати.

Найпростіший варіант угруповання - просто використовувати нову форму або вкладку на формі. Якщо перемикачі знаходяться на одній формі (або на одній вкладці), вони автоматично вважаються взаємовиключними. Якщо ж потрібно більш точно вибрати групи, то необхідно використовувати елемент управління Frame.

Frame - це просто рамка, яка виділяє прямокутну область на формі і дозволяє організувати елементи управління. Вміщені всередину рамки перемикачі вважаються взаємовиключними, інші елементи управління ведуть себе точно так само, хоча іноді буває корисно з точки зору наочності звести разом під одним рамкою, наприклад, набір прапорців. При бажанні рамку можна зробити невидимою, встановивши для властивості BorderStyle значення 1 і прибравши значення властивості Caption.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]