Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VBA лаб .doc
Скачиваний:
4
Добавлен:
01.05.2025
Размер:
1 Мб
Скачать
☆

Приклад створення екранної форми

Завдання 1. Розглянемо процес створення нового діалогового вікна на наступному прикладі, коли призначена для користувача форма відображує повідомлення користувача. Щоб вивести на екран діалогове вікно, що представляється екранною формою, необхідно створити процедуру, де б використовувався метод Show (Показати) об'єкту UserForm (Екранна форма). Якщо екранна форма має ім'я UserForm1. то наступна процедура відобразить діалогове вікно, представлене цією екранною формою, :

Ця процедура повинна знаходитися в стандартному модулі VBA, а не в модулі екранної форми. Після виконання процедури Показать_диал_окно на екрані з'явитися призначена для користувача форма UserForm1. Звертаємо вашу увагу на те, що з поставленим завданням легко б впоралася функція MsgBox, яка виводить вікно повідомлення на дисплей. Але діалогове вікно екранної форми представляє велику гнучкість відносно форматування і розташування повідомлення.

Порядок створення діалогового вікна включає наступні дії:

  1. Створіть нову робочу книгу;

  2. Відкрийте вікно редактора VBA (Alt+F11);

  3. У вікні проектів (Project) редактора Visual Basic подвійним клацанням миші виберіть робочу книгу;

  4. Задайте команду InsertUserForm. На екрані з'явиться порожня форма з назвою UserForm1 і панель Toolbox; Режим, в якому відображується в даному випадку форма називається режимом конструктора. У режимі конструктора можна додавати або видаляти елементи управління у формі, визначати властивості форми і елементів управління і взагалі інтерактивно маніпулювати зовнішнім виглядом форми. Коли форма відображується і використовується як частина виконуваної VBA-программы, то говорять, що вона знаходиться в режимі виконання.

    1. Зробіть активним вікно Properties (Властивості). Якщо воно не відображується в редакторові VBA, натисніть клавішу F4. Змініть властивості Name (Ім'я) на Инфо_окно і Caption (Заголовок) на О данной рабочей книге;

    1. За допомогою панелі Toolbox додайте в екранну форму елемент Label (Напис). Цей напис гратиме роль повідомлення на формі;

    1. У вікні Properties клацніть на властивості Font (Шрифт) і підберіть відповідний шрифт, наприклад Times New Roman, 12 розмір, курсив і пропишіть текст або у вікні Властивостей, міняючи властивість Caption, або безпосередньо в Написі як це показано на малюнках. Результати відразу ж відобразяться на формі:

    1. Тепер додайте до діалогового вікна командну кнопку і змініть її властивості Name (Ім'я) на КнопкаОК, Caption (Заголовок) на ОК і Default (За умовчанням) на True (Істина)

Таким чином, ми створили з вами діалогове вікно, яке має усі необхідні елементи управління. Не вистачає лише способу відображення цього діалогового вікна. Це завдання вирішується наступною процедурою:

Завдання 2. Для написання такої процедури необхідно виконати наступні дії:

  1. У редакторові VBA вставте модуль, задавши команду InsertModule (ВставкаМодуля);

  2. На листі порожнього модуля введіть наступний код:

  1. Перейдіть у вікно програми Excel і запустіть процедуру на виконання, задавши команду Alt+F8;

  2. У діалоговому вікні Макрос виберіть із списку макросів Показать_диал_окно і клацніть по кнопці Выполнить

На екрані з'явиться створене діалогове вікно. На жаль, клацання по кнопці ОК не приведе ні до яких дій. Для цієї кнопки треба мати процедуру обробки події. Давайте спробуємо написати процедуру обробки подій, які можуть виникнути при роботі з діалоговим вікном, наприклад клацання по кнопці ОК. Якщо ви проаналізуєте алгоритм створення призначених для користувача діалогових вікон, то побачите, що залишився останній пункт - створення процедур обробки подій для елементів управління екранної форми.

Завдання 3. Продовжимо наш приклад, виконуючи ряд дій :

  1. Закрийте діалогове вікно, що з'явилося, і перейдіть в редактор Visual Basic;

  2. Перейдіть у вікно форми Инфо_окно, двічі клацнувши на її назві у вікні Project (таким чином ви активізували вікно форми);

  3. Двічі клацніть на елементі ОК;

  4. Редактор активізує модуль для призначеної для користувача форми і вставить в нього початковий текст програми, як показано на малюнку (таким чином ми створюватимемо процедуру обробки подій - клацання по кнопці ОК). Нагадаємо, що подія - це, то що відбувається, коли користувач впливає на елемент управління. Наприклад, клацання на командній кнопці ініціалізувала подія Click (Клацання), що асоціюється з цією кнопкою. Програмне застосування повинне мати процедури, які б виконувалися при настанні тієї або іншої події. Такі процедури часто називають процедурами обробки подій (процедурами обработки событий) . Процедури обробки подій носять імена, в яких назва елементу управління об'єднана з назвою події за допомогою символу підкреслення. Наприклад, як в нашому випадку, процедура, яка виконується після клацання на кнопці КнопкаОК, називається КнопкаОК_ Click.

  5. Вставте в тіло процедури наступного оператора Unload Инфо_окно. . Цей оператор закриває призначену для користувача форму по клацанню по кнопці ОК;

  6. Уся підпрограма обробника події - клацання по кнопці ОК - має наступний вигляд:

  1. Якщо тепер ви ще раз запустите свою процедуру Показать_диал_окно на виконання, то закрити її зможете клацанням по кнопці ОК.

Резюме: тепер підведемо підсумки. Що ви зуміли зробити?

    1. Створити призначену для користувача форму з повідомленням на ній, додавати елементи управління на форму (напис і командну кнопку)

    2. Вивести на екран наше діалогове вікно, представлене екранною формою. Ця дія забезпечувалася процедурою, в якій використовувався метод Show (Показати). Причому ця процедура повинна знаходитися в стандартному модулі VBA, а не в модулі екранної форми. Запустити процедуру можна двома способами - командою Run з редактора VBA (або натиснувши F5) і стандартною командою запуску макросу (сервісмакросмакроси).

    3. Вивантажувати (закривати) діалогове вікно з оперативної пам'яті за допомогою процедури обробки події - клацання по кнопці ОК.

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

Продуктивність одноковшового екскаватора розраховується по формулі:

P = 3600*Q*K1/(K2*T);

Де: Q - об'єм ковша;

T - час циклу;

K1 - коефіцієнт накопичення;

K2 - коефіцієнт розпушування;

Продуктивність багатоковшового екскаватора розраховується по формулі:

P = 3600*H*B*V;

Де: Н - глибина траншеї;

B - ширина траншеї;

V - Робоча швидкість екскаватора

Діятимемо по алгоритму створення призначеного для користувача діалогового вікна.

Перший етап - визначимо, для чого використовуватиметься наше діалогове вікно: ми через форму вводитимемо дані, отримуватимемо результати обчислень, а також управляти роботою програмного коду (запускати його на обчислення, вивантажувати вікно, очищати поля введення та ін.). Можна сконструювати форму так:

Вибір механізму робитимемо за допомогою перемикачів, які згруповані в один елемент управління рамкою, введення початкових даних - за допомогою текстових полів, результати обчислень отримаємо теж в текстовому полі, додамо напису біля кожного текстового поля за допомогою елементу управління - напис, кнопка ОК використовується для розрахунків, кнопка Вихід - вивантаження форми, кнопка Очистити - для обнулення текстових полів перед новим обчисленням.

Другий етап - Перейдемо в редактор Visual Basic і вставимо нову екранну форму;

Третій етап - додамо елементи управління :

  • перемикач (OptionButton);

  • рамку (Frame);

  • вісім написів (Label);

  • вісім текстових полів (Textbox);

  • три командні кнопки (CommandButton).

Четвертий етап - визначимо властивості елементів управління, встановлених на формі і самої форми таким чином, :

Об'єкт

Властивість

Змінити на

Призначена для користувача форма ((UserForm))

Name (Ім'я)

frmРасчетПроизв

Caption (Заголовок)

Розрахунок продуктивності

Рамка (Frame 1)

Name (Ім'я)

FraРамка

Caption (Заголовок)

Вибір машини або механізму

Переключатель1 (OptionButton1)

Name (Ім'я)

Opt1

Caption (Заголовок)

Одноковшовий екскаватор

Переключатель2 (OptionButton2)

Name (Ім'я)

Opt2

Caption (Заголовок)

Багатоковшовий екскаватор

Мітка 1 (Label1);

Name (Ім'я)

Lbl1

Caption (Заголовок)

Об'єм ковша

Мітка 2(Label2);

Name (Ім'я)

Lbl2

Caption (Заголовок)

Час циклу

Мітка 3(Label3);

Name (Ім'я)

Lbl3

Caption (Заголовок)

Коефіцієнт накопичення

Мітка 4(Label4);

Name (Ім'я)

Lbl4

Caption (Заголовок)

Коефіцієнт розпушування

Мітка 5(Label5);

Name (Ім'я)

Lbl5

Caption (Заголовок)

Продуктивність

Мітка 6(Label6);

Name (Ім'я)

Lbl6

Caption (Заголовок)

Глибина траншеї

Мітка 7(Label7);

Name (Ім'я)

Lbl7

Caption (Заголовок)

Ширина траншеї

Мітка 8(Label8);

Name (Ім'я)

Lbl8

Caption (Заголовок)

Раб. ск. эксковатора

Поле 1 (TextBox1)

Name (Ім'я)

Txt1

Caption (Заголовок)

відсутній

Поле 2 (TextBox2)

Name (Ім'я)

Txt2

Caption (Заголовок)

відсутній

Поле 3 (TextBox2)

Name (Ім'я)

Txt3

Поле 4 (TextBox3)

Name (Ім'я)

Txt4

Поле 5 (TextBox4)

Name (Ім'я)

Txt5

Поле 6 (TextBox5)

Name (Ім'я)

Txt6

Поле 7 (TextBox6)

Name (Ім'я)

Txt7

Поле 8 (TextBox6)

Name (Ім'я)

Txt8

Кнопка 1 (CommandButton 1)

Name (Ім'я)

CmdOK

Caption (Заголовок)

OK

Кнопка 2 (CommandButton 2)

Name (Ім'я)

CmdВыход

Caption (Заголовок)

Вихід

Кнопка 3 (CommandButton 3)

Name (Ім'я)

CmdОчистить

Caption (Заголовок)

Очистити

П 'ятий етап. Напишемо процедури обробки подій для кожної кнопки. Клацання по кнопці ОК викликає подія - вичислення за відповідною формулою:

Клацання по кнопці Вихід викликає подію - вивантажити форму:

Клацання по кнопці Очистити викликає подію - очищення усіх полів введення після проведеного розрахунку:

Контрольні питання:

  1. Що є призначена для користувача форма? Для чого вона використовується?

  2. Перерахуєте алгоритм створення призначеної для користувача форми.

  3. Що робить метод show, load, unload?

  4. Що є режим конструктора? Для чого він призначений?

  5. Що є режим виконання форми?

  6. Як встановити на формі потрібні елементи управління?

  7. Назвіть відомі вам елементи управління.

  8. Як задати властивості формі і елементам управління в режимі конструктора?

  9. Що таке процедура обробки події?

  10. Як створити процедуру обробки події?

2

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