Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекції VBA.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.17 Mб
Скачать

5 Створення форм та їх використання

5.1 Елементи керування у формах, їхні властивості, методи, події.

Форма UserForm надає користувачу можливість створювати діалогові вікна для інформаційних систем користувача. Вона служить базою вікна користувача, на якій у залежності від розв'язуваної задачі розміщають необхідні елементи керування. VBA має умонтований набір елементів керування, що подані на відповідній панелі.

Мал. 4. Панель елементів керування.

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

  • Напис - ім'я Label, призначена для висновка тексту у формі.

  • Поле - ім'я цього елемента керування по умовчанню - TextBox. Використовується для введення або виведення даних. У полі можна відобразити які-небудь дані або в поле можна ввести дані і прочитати їх із поля.

  • Список - ім'я ListBox. Використовується для виведення списку яких-небудь значень, із якого користувач може вибрати одне або декілька значень, що запам'ятовуються для подальшого використання.

  • Поле зі списком - ComboBox. Використовується для створення списку , що розкривається, із якого користувач може вибрати один з елементів або увести своє значення.

  • Прапорець - CheckButton. Використовується для виведення прапорця, що буває в однім із двох станів: є прапорець і немає.

  • Перемикач - OptionButton. Використовується для вибору одного з декількох альтернативних варіантів.

  • Вимикач - ToggleButton. Використовується для того, щоб відзначити одне з двох станів - включене/виключено.

  • Рамка - Frame. Використовується для угруповання елементів керування у формі.

  • Кнопка - ім'я CommandButton. Використовується для запуску процедур, пов'язаних із щиголями на кнопці.

  • Набір вкладок і Набір сторінок - TabStrip і Page. Створюють вікна діалогу, у яких розташовано декілька сторінок або декілька вкладок.

  • Смуга прокручування - ScrollBar. Виводить у формі смугу прокручування.

  • Лічильник - SpinButton. Виводить на екран елемент, що складається з двох стрілк нагору й униз, щиголі на який змінюють значення внутрішнього лічильника на одиницю.

  • Малюнок - Image. Використовується, щоб помістити у формі відображення графічного файла у форматі bmp, gif, jpg.

  • Редагування посилань - RefEdit. Цей елемент керування використовується для редагування посилань на клітини або діапазони.

Кожний елемент керування розміщається у формі в процесі конструювання форми. Елементи керування мають властивості, що можна задати при роботі в режимі конструктора або в програмі, що виконується при запуску форми. Для встановлення властивостей елемента керування вручну при його конструюванні необхідно виділити елемент керування і натиснути кнопку Свойства панелі інструментів Элементы управления. На екрані відобразиться діалогове вікно Свойства.

Після установки властивостей елементів керування і форми переходять до написання коду, пов'язаного з ними і з подіями, що ініційовані користувачем. У кожного елемента керування є цілий набір подій, що опрацьовують ті або інші дії. Наведемо деякі з них:

  • Click - щиголь мишею на елементі керування (частіше усього на кнопці або на елементі списку);

  • DblClick - подвійний щиголь мишею на елементі керування.

Код обробки подій записується у вікні коду (програми), що пов'язаний із формою. Для активізації вікна програми достатньо або двічі клацнути на елементі керування або натиснути кнопку Исходный текст панелі інструментів Элементы управления. У лівій верхній частині вікна програми знаходиться раскрывающийся список з іменами об'єктів, для яких у даній формі створюються процедури опрацювання подій.

У цьому списку поданий поділ програми Загальна частина, де описуються переменные і константи рівня форми.

У правій верхній частині вікна коду знаходиться поле зі списком, що містить імена подій, пов'язаних з обраним у лівій частині вікна об'єктом. На малюнку 5 приведене вікно коду (програми) форми з ім'ям UserForm1, у якому розкритий список подій для командної кнопки.

Мал. 5. Вікно програми для форми UserForm1.

Загальні властивості елементів керування :

  • Caption - напис, відображуваний при елементі керування.

  • Enabled - якщо дорівнює True, то користувач може управляти елементом, у противному випадку елемент недоступний для користувача.

  • Name - ім'я елемента керування. При створенні елемента VBA установлює цю властивість по умовчанню. Наприклад, для першої створеної кнопки встановлюється ім'я CommandButton1, для другої - CommandButton2 і т.д. Ви можете змінити це ім'я за своїм бажанням.

  • ControlSource - джерело даних для елемента керування. Звичайно джерелом даних служить клітина або діапазон клітин. Елемент керування, для якого задана ця властивість, називається пов'язаним. При зміні даних в елементі керування вони відображаються в клітині і навпаки.

Крім властивостей кожний елемент керування має методи, що виконують які-небудь дії над об'єктом. Загальні методи:

  • Add - добавляє елемент керування під час виконання програми.

  • SetFocus - встановлює фокус (активізує) на елементі керування, що викликав цей метод.

Перейдемо тепер до обговорення властивостей і методів кожного з елементів керування:

  1. Поле -елемент керування TextBox використовується для введення тексту, що у наступному використовується в програмі, або для виведення результатів роботи програми. Основні властивості:

  • Text - повертає текст, що утримується в поле. Наприклад, оператор

pr=TextBox1. Text

у перемінну pr поміщає значення, що користувач ввів у текстове поле. Оператор

TextBox1. Text=”Умови контракту виконані”

у вікні текстового поля відображає зазначений текст.

  • Multiline - припустимі значення: True -встановлюється багатостроковий режим введення тексту в поле; False -одностроковий режим.

  • WordWrap - припустимі значення: True - встановлюється режим автоматичного переносу слів на нову строку; False - у противному випадку.

  1. Кнопка - елемент керування CommandButton використовується для запуску процедур при натисканні на кнопку. Основна властивість Caption - текст, відображуваний на кнопці.

  2. Список - елемент керування ListBox застосовується для збереження списку значень, із якого користувач може вибрати одне або декілька. Обрані значення можуть використовуватися в тексті програми для обробки вибору. Властивості:

  • ListIndex - повертає номер обраного елемента списку. Нумерація елементів списку починається з нуля.

  • ControlSource - задається клітина, у якій записується значення, обране зі списку.

  • RowSource - задає діапазон, у якому знаходяться значення, відображувані в списку.

  • ListCount - повертає число елементів списку.

  • ColumnCount - встановлює число стовпчиків у списку.

  • ColumnHeads - припустимі значення: True (виводяться заголовки стовпчиків списку , що розкривається ,) і False (у противному випадку).

  • Value - повертає обраний елемент у списку.

  • Text - повертає обраний елемент у списку.

  • TextColumn - установлює стовпчик у списку, елемент якого встановлюється властивістю Text.

  • List(s1,s2) - повертає елемент списку, що розташован на перетинанні зазначених рядка s1 і стовпчика s2.

  • Selected - припустимі значення True (якщо елемент списку обраний) і False (у противному випадку). Використовується для визначення обраного елемента списку, якщо у властивості MultiSelect дозволений вибір декількох елементів списку.

  • MultiSelect - установлює засіб вибору елементів із списку. Припустимі значення:

  • FmMultiSelectSingle - вибір тільки одного елемента;

  • FmMultiSelectMulti - дозволений вибір декількох елементів за допомогою щиголя, або натисканням клавіші <Пробел>;

  • FmMultiSelectExtended - дозволене використання клавіші <Shift> при виборі ряду послідовних елементів списку.

Наведемо найбільш часто використовувані методи елемента керування ListBox:

  • AddItem елемент - метод, що додає елемент у список. Наприклад, така процедура заповнює список з ім'ям ListBox1 днями тижня:

Sub Тиждень() ListBox1. AddItem “Понеділок” ListBox1. AddItem “Вівторок” ListBox1. AddItem “Середа” ListBox1. AddItem “Четвер” ListBox1. AddItem “П'ятниця” End Sub

  • RemoveItem номер - метод, що видаляє елемент списку з зазначеним номером.

  1. Поле зі списком - елемент керування ComboBox застосовується для збереження списку значень, із якого користувач може вибрати одне значення або ввести своє. Поєднує у собі функціональні можливості cписка ListBox і поля TextBox. Властивості об'єкта такі, як ListIndex, ControlSource, RowSource, Value, ListCount, Enabled, List і методи Clear, RemoveItem, AddItem аналогічні відповідним властивостям і методам списку ListBox.

Заповнити список або поле зі списком можна одним із таких засобів:

  1. Поелементно за допомогою методу AddItem;

  2. З діапазону, у котрий попередньо введені елементи списку. У цьому випадку у властивості RowSource записується діапазон. Це можна зробити при конструюванні форми у вікні властивостей або в програмі, написавши оператор: ListBox1. RowSource=”A1:B4”.

Продемонструємо можливості роботи зі списками на прикладі.

Приклад 5.1. Уявіть, що ви менеджер невеличкої фірми. У вас на листі Excel з ім'ям «Співробітники» зберігається список усіх співробітників фірми, і вам необхідно скласти список відпусток на якийсь місяць поточного року. Щоб справитися з цією складною роботою, ви створюєте форму і пишете до неї програму, що дозволяє вибрати пору року, потім вибрати місяць, що належить до цієї пори року, а потім відібрати співробітників фірми, що йдуть у відпустку в обраному місяці. Список відпускників поміщається на новий лист.

У формі розташовані такі елементи керування:

  • Рамка - Frame1, усередині якої розташовані 4 перемикача для вибору пори року - OptionButton1, OptionButton2, OptionButton3, OptionButton4. Властивості Caption цих перемикачів змінені на «Зима», «Весна», «Літо», «Осінь» відповідно.

  • Список , що розкривається - ComboBox1, розташований під написом «Виберіть місяць». При конструюванні список залишений порожнім. Заповнюється список у процедурах, призначених на щиголь у кожному з перемикачів. При конструюванні встановлена властивість MathRequired=True, щоб не можна було б ввести свою назву місяця, а можна було тільки вибрати зі списку.

М ал. 6. Форма для формування списку відпускників.

  • Список - ListBox1. У цього елемента при конструюванні змінені такі властивості:

  • ColumnCount = 2 , щоб відображати в списку два стовпчики;

  • MultiSelect = 1(fmMultiSelectMulti) , щоб розв'язати вибір декількох елементів із списку;

  • RowSource = Співробітники! B3:C15 , щоб у ListBox1 відображався список співробітників, розташований на листі «Співробітники» в клітинах B3:C15.

  • ListStyle = 1(fmListStyleOption) , щоб перед кожним елементом у списку розташовувався прапорець і вибір елемента зі списку відповідав установці цього прапорця;

  • ColumnHeads = True , щоб над колонками списку були розташовані заголовки;

  • TextColumn = 1 , щоб властивістю Text поверталися обрані значення першого стовпчика.

  • Командна кнопка - CommandButton1, у якої властивість Caption замінена на «Записати відпускників». Крім того, змінена властивість Font.

Програми, пов'язані з формою:

Sub CommandButton1_Click()

Ця процедура переглядає всі елементи списку ListBox1 і

елементи,що обрані, записує на новий лист.

При цьому рахується кількість виділених елементів.

Dim ks As Integer, i As Integer, k As Integer

k = 0 'Це лічильник числа відпускників

Worksheets. Add додаємо новий лист

ActiveSheet. Name = "Відпускники " & ComboBox1. Value

Range("A1"). Value = "№ пп" ‘заголовки колонок

Range("B1"). Value = "Прізвище співробітника"

Range("С1"). Value = "Посада"

Range("A1:С1"). Font. Bold = True

Range("A1:С1"). Borders(xlEdgeBottom). LineStyle = xlDouble

ks = ListBox1. ListCount ‘кількість елементів у списку

For i = 0 To ks - 1 цикл по всіх елементах списку

If ListBox1. Selected(i) Then якщо елемент списку обраний

то властивість Selected(i) i-го елемента дорівнює True

k = k + 1

ActiveCell. Offset(1, 0). Select

ActiveCell. Value = k

ActiveCell. Offset(0, 1). Value = ListBox1. List(i,0) записуємо прізвище

ActiveCell. Offset(0,2). Value=ListBox1. List(i,1) записуємо посаду

End If

Next i

ActiveCell. Range("A1:С1"). Select

Selection. Borders(xlEdgeBottom). LineStyle = xlDouble

ActiveCell. Offset(1, 0). Select

ActiveCell. Value = "Усього йдуть у відпустку - " & k & " робітників"

Range("B1:B" & CStr(k + 1)). Select

Selection. Columns. AutoFit

Range("A1"). Select

End Sub

Private Sub OptionButton1_Click()

Ця процедура починає працювати, якщо обрана «Зима»

Формується список зимових місяців

ClearList 'виклик процедури, яка очищує список, що розкривається

ComboBox1. AddItem "Грудень"

ComboBox1. AddItem "Січень"

ComboBox1. AddItem "Лютий"

ComboBox1. Value = "Грудень" ‘активизується перший місяць

End Sub

Private Sub OptionButton2_Click()

Ця процедура починає працювати, якщо обрана «Весна»

Формується список весняних місяців

ClearList

ComboBox1. AddItem "Березень"

ComboBox1. AddItem "Квітень"

ComboBox1. AddItem "Травень"

ComboBox1. Value = "Березень"

End Sub

Private Sub OptionButton3_Click()

Ця процедура починає працювати, якщо выбрано «Літо»

Формується список літніх місяців

ClearList

ComboBox1. AddItem "Червень"

ComboBox1. AddItem "Липень"

ComboBox1. AddItem "Август"

ComboBox1. Value = "Червень"

End Sub

Private Sub OptionButton4_Click()

Ця процедура починає працювати, якщо обрана «Осінь»

Формується список осінніх місяців

ClearList

ComboBox1. AddItem "Вересень"

ComboBox1. AddItem "Жовтень"

ComboBox1. AddItem "Листопад"

ComboBox1. Value = "Вересень"

End Sub

Sub ClearList()

Ця процедура очищає список, що розкриваэться від елементів,

які були додані в нього раніше

Dim k As Integer, i As Integer

k = ComboBox1. ListCount ‘обчислення кількості елементів у списку

If k > 0 Then ‘якщо елементи в списку є, то

Do ‘починаємо цикл по видаленню елементів списку

ComboBox1. RemoveItem (0) ‘ видаляємо елемент списку

k = ComboBox1. ListCount

Loop While k > 0 ‘цикл, поки не видалимо всі елементи списку

End If

ComboBox1. Value = ""

End Sub

Private Sub UserForm_Initialize()

Ця процедура працює при відкритті форми, вона активізує ‘ ‘ лист з інформацією про співробітників фірми

Worksheets("Співробітники"). Activate

End Sub

Мал. 7. Форма в процесі роботи.

Продовжимо вивчення елементів керування у формах, їхніх властивостей і методів.

  1. Перемикач - елемент керування OptionButton. Перемикач може бути в однім із двох станів - обраний, тоді усередині чорна точка, або ні. Перемикачі звичайно групуються за допомогою рамки (Frame) і тоді з групи перемикачів може бути обраний тільки один. При виборі такого перемикача попередній скидається. Властивості: - Caption - напис, що знаходиться поруч із перемикачем; - Value - значення, що дорівнює True, якщо перемикач обраний, і False у противному випадку.

  2. Прапорець - елемент керування CheckButton. Властивості ті ж, що й у перемикача, але з групи прапорців можна встановлювати скільки завгодно.

  3. Набір сторінок - елемент керування MultiPage. Цей елемент керування реалізує діалогові вікна, що складаються з кількох сторінок. Заголовки сторінок відбиваються на вкладках. Перехід від сторінки до сторінки здійснюється вибором вкладки за допомогою щиголя кнопкою миші. Об'єкт MultiPage містить у собі сімейство Pages, що є набором сторінок, що входять у цей об'єкт. Властивості об'єкта MultiPage:

  • Value, BoundValue - повертає номер активної сторінки. Нумерація провадиться з 0.

  • SelectedItem - повертає обрану сторінку.

Сімейство Pages має єдину властивість - Count, що повертає число елементів сімейства. Крім того, у сімейства Pages є такі методи:

  • Add - створює нову сторінку.

  • Clear - видаляє всі сторінки із сімейства.

  • Remove - видаляє сторінку із сімейства Pages.

  • Item - повертає сторінку з зазначеним індексом. Синтаксис:

Set Object = object. Item(індекс).

  1. Набір вкладок - елемент керування TabStrip дозволяє створити декілька вкладок у діалоговому вікні. Містить у собі сімейство Tabs, що подає собою набір усіх вкладок. Об'єкт TabStrip і сімейство Tabs має такі ж властивості і методи, що й об'єкт MultiPage і сімейство Pages.

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