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

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

Елемент управління CommandButton (кнопка) - найпоширеніший елемент управління на формах. У більшості форм обов'язково буде, принаймні, дві кнопки: OK і Відміна (Cancel). При натисканні кнопки OK повинно виконатися ту дію, заради чого створювалася форма, після натискання кнопки Скасувати форма повинна закритися. Ваша задача - забезпечити необхідний код для цих кнопок, який і буде виконувати ці дії. Далі представлені найбільш важливі властивості кнопки.

􀂈 Cancel - якщо для цієї властивості встановити значення True, то кнопка буде натискатися автоматично при натисканні клавіші <Esc>. Як правило, на такі кнопки поміщаються написи типу "Скасувати", "Вихід", "Повернутися у вікно програми". Однак, крім призначення клавіші <Esc>, властивість нічого більше цій кнопці не дає. Необхідно ще додати код в обробник події Click, наприклад:

Private Sub CommandButton1_Click ()

Unload Me

End Sub

Me - це спеціальне зарезервоване слово, яке представляє поточний об'єкт (в даному випадку форму). Його можна використовувати замість імені форми.

􀂈 Caption - напис, який буде на кнопці.

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

􀂈 Picture - якщо простий напис вас не влаштовує, можна призначити кнопці малюнок (піктограму).

􀂈 TakeFocusOnClick - визначає, чи буде передаватися управління цій кнопці при натисканні на неї. За замовчуванням встановлено True.

Головна подія для кнопки - це, звичайно, Click. Як правило, до цього і прив'язується програмний код, заради якого створювалася кнопка.

Елементи управління ScrollBar і SpinButton

Смуги прокрутки (ScrollBars) найчастіше зустрічаються в текстових полях, коли введений текст повністю на екрані не поміщається. Однак нічого не заважає вам використовувати ScrollBar як окремий елемент управління (користувачі часто називають його "повзунок") для вибору якогось значення з діапазону. Зазвичай такий елемент управління використовується для вибору плавно змінюваних значень, наприклад: рівня гучності, яскравості, стиснення, пріоритету і т. д.

Головна подія для ScrollBar - вже знайоме нам Change. Головні властивості в цього елементу управління представлені далі.

􀂈 Max і Min - максимальне і мінімальне значення, які можна задати за допомогою цього елемента керування. Можливий діапазон - від -32 767 до +32 767. При цьому максимальне значення може бути і менше мінімального - просто повзунок доведеться тягнути у зворотний бік.

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

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

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

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

Private Sub ScrollBar1_Change ()

Label1.Caption = ScrollBar1.Value

End Sub

У більш складному варіанті користувачеві можна вибирати - чи використовувати повзунок або вводити значення в текстовому полі. В цьому випадку в події Change для текстового поля необхідно передбачити перевірку вводимих користувачем значень і зворотний зв'язок з повзунком.

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

Елементи управління TabStrip і MultiPage

Набір вкладок (TabStrip) і набір сторінок (MultiPage) застосовуються в одній і тій же ситуації - коли елементів управління занадто багато, щоб вмістити їх на одній сторінці форми. Ці елементи управління дозволяють створювати на формі кілька вкладок (сторінок), між якими зможе переходити користувач. Принципова відмінність між цими елементами управління полягає в тому, що на вкладках TabStrip завжди розташовують-ся однакові елементи управління, а на MultiPage - різні. Застосування множини вкладок ви напевно бачили в багатьох програмах (наприклад, в Word у вікні Параметри, що відкривається за допомогою меню Сервіс | Пара-метри).

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

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

􀂈 TabOrientation - визначає, де будуть розташовані заголовки вкладок (за замовчуванням вгорі).

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

Головна подія цих елементів управління - Change (тобто перехід між вкладками). До нього можна прив'язати, наприклад, перевірку вже введених користувачем значень або виведення попереджень.

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

Напевно, малюнок (Image) - це найпростіший з елементів управління. Він дозволяє відобразити на формі малюнок в одному з поширених фор-матів, який буде реагувати на клацання мишею (а може просто використовуватися для прикраси форми). Зазначимо деякі моменти, пов'язані з застосуванням елемента управління Image:

􀂈 в якості альтернативи можна використовувати властивість Picture форми (особливо якщо вам потрібен фоновий малюнок для всієї форми);

􀂈 ще дві альтернативи - це властивість Picture елементів управління Label або CommandButton. Функціональність малюнків виходить практично однакова;

􀂈 при використанні цього елемента керування саме зображення копіюється всередину документа і зовнішній його файл більше не потрібний. Головні властивості цього елемента управління представлені далі.

􀂈 Picture - дозволяє вибрати саме зображення для форми.

􀂈 PictureAlignment - дозволяє вибрати місцезнаходження зображення у відведеній йому області. За замовчуванням малюнок розташовується по центру.

􀂈 PictureSizeMode - дозволяє вибрати режим розтягування або зменшення елемента у випадку, якщо він не відповідає розміру області. 􀂈 PictureTiling - визначає, розмножувати чи маленький малюнок, щоб він покрив всю відведену йому область ("замостити"). Головна подія елемента управління Image - Click.

Робота з елементами управління

Підготовка:

Створіть нову книгу Excel и збережіть її Як Prikaz.xls. Заповніть комірки з A1 по A5 значеннями, аналогічними подання на рис.5.12. Дані про співробітників кращє ввести в родовому відмінку, оскільки ці значення будуть підставлятися в автоматично створюваний наказ у форматі документаWord.

2. Відкрийте редактор Visual Basic и у вікні Project Explorer клацніть пра-вою кнопкою миші по об'єкту Ця книга и в контекстному меню виберіть View Code.

3. У вікні редактора коду для цієї книги введіть Наступний код:

'При відкрітті робочої книги показуємо форму UF1

Private Sub Workbook_Open ()

UF1.Show

End Sub

'Спеціальна процедура, Яка друкує наказ у Word

Public Sub DocWrite (sPovod As String, sFio As String, bFlagPremia As Boolean, bFlagGramota As Boolean, nSummaPremii As Long, sOtvIsp As String)

Dim oWord As Word.Application

Dim oDoc As Word.Document

Set oWord = CreateObject ("Word.Application")

Set oDoc = oWord.Documents.Add ()

oWord.Visible = True

oDoc.Activate

With oWord.Selection

.TypeText "Наказ"

.Style = "Заголовок 1"

.ParagraphFormat.Alignment = wdAlignParagraphCenter

.TypeText vbCrLf

.Style = "Звичайний"

.TypeText vbCrLf

.TypeText "м.Санкт-Петербург" & Space (90) & Date

.TypeText vbCrLf

.TypeText vbCrLf

.TypeText "За проявлені успіхі в" & sPovod & _

"Нагородити" & sFio & ":"

.TypeText vbCrLf

If bFlagPremia Then

.TypeText vbTab & "- грошовою премією в сумі" & _

nSummaPremii & "гривень"

End If

If bFlagGramota Then

.TypeText vbCrLf

.TypeText vbTab & "- Почесна грамота."

Else

.TypeText "."

End If

.TypeText vbCrLf

.TypeText vbCrLf

.TypeText vbCrLf

.TypeText vbCrLf

.TypeText "Генеральний директор" & vbTab & vbTab & _

vbTab & "Іванов І. І."

.ParagraphFormat.Alignment = wdAlignParagraphCenter

.TypeParagraph

.TypeText vbCrLf

.TypeText vbCrLf

.ParagraphFormat.Alignment = wdAlignParagraphLeft

.TypeText Text: = ("Отв. Виконавець" & sOtvIsp)

.TypeParagraph

End With

End Sub

У вікні Project Explorer клацніть правою кнопкою миші на проекті Prikaz.xls и в контекстному меню виберіть Insert | UserForm. Віділіть створений вами об'єкт форми і натісніть клавішу <F4>. У вікні Properties введіть для Властивості Name цієї форми значення UF1.

Помістіть на форму з Toolbox єдину кнопку - елемент управління CommandButton1. Встановіть для цієї кнопки Значення Властивості Caption як "Надрукувати наказ" (без лапок) i змініть розміри і місценахождення цієї кнопки.

Клацніть правою кнопкою миші по кнопці CommandButton1 на вашій формі, в контекстному меню виберіть View Code и додайте в код подвійної процедури для Події Click цієї кнопки Наступний код:

Private Sub CommandButton1_Click ()

Dim sPovod As String

Dim sFio As String

Dim bFlagPremia As Boolean

Dim bFlagGramota As Boolean

Dim nSummaPremii As Long

Dim sOtvIsp As String

'Підставіті дані з форми

sPovod = "освоєння нових інформаційних технологій"

sFio = "Іванова Івана Івановича"

bFlagPremia = True

bFlagGramota = True

nSummaPremii = 100000

sOtvIsp = "Петрова П. П."

'Кінець підстановки даних

Call ЕтаКніга.DocWrite (sPovod, sFio, bFlagPremia, bFlagGramota, _

nSummaPremii, sOtvIsp)

End Sub

6. Запустіть вашу форму на виконання и Переконайся, Що вона працює: виводячи створюваний документ Word наказ з фіксованими значеннями.

ЗАВДАННЯ:

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

  1. 1. Значення змінної sPovod повинне вибиратися з трьох можливих значень: "освоєння нових інформаційних технологій", "впровадженні нових програмних продуктів" і значення, яке користувач може ввести через текстове поле. Використовуйте для цього набір з трьох переключате-лей і текстове поле (воно має бути заховане, якщо користувач вы-брал один з перших двох перемикачів). За умовчанням повинно под-ставляться "освоєнні нових інформаційних технологій".

  2. 2. Значення змінної sFio повинне вибиратися користувачем за допомогою комбінованого списку. У цей комбінований список повинні ав-томатически поміщатися значення з усіх непорожніх осередків стовпця A лис-та Excel. За умовчанням повинне вибиратися значення "Іванова Івана Івановича".

  1. 3. Значення змінних bFlagPremia і bFlagGramota повинні встановлюватися залежно від стану двох прапорців — "Премія" і "Грамота". За умовчанням обидва прапорці мають бути встановлені. Якщо користувач зняв обидва прапорці, то йому повинно виводитися застережливе повідомлення "Не вибрана ні премія, ні почесна грамота"! з відміною виведення документа.

  2. 4. Користувач повинен мати можливість задавати значення змінної nSummaPremii або за допомогою смуги прокрутки з діапазоном значень

  1. від 0 грн. до 100 000 грн., або за допомогою текстового поля. Якщо прапорець "Премія" знятий, то смуга прокрутки і текстове поле мають бути сховані від користувача.

Хід смуги прокрутки (збільшення або зменшення значення при клацанні на кнопках із стрілками) має дорівнювати 100 грн.

За умовчанням розмір премії має дорівнювати 100 грн.

  1. 5. Помістіть на форму ще одну кнопку Відміна. Ця кнопка повинна закривати поточну форму і спрацьовувати при натисненні клавіші <Esc>.

  2. 6. У заголовку форми повинне виводитися значення "Формування наказу про виплату премії".

Відповідь до завдання

До пункту 1 завдання (робота з перемикачами і текстовим полем) :

1. У вікні Project Explorer двічі клацніть мишею по об'єкту форми UF1. Потім в ToolBox клацніть по об'єкту Label і відведіть місце цьому елементу управління у верхній частині форми. Клацніть правою кнопкою миші по створеному елементу управління Label1 і в контекстному меню виберіть Properties. Змініть значення властивості Caption на "За що:" і за допомогою властивості Font підберіть відповідний шрифт і його розмір.

У ToolBox клацніть по елементу управління OptionButton і відведіть на формі місце цьому елементу управління. Повторіть цю операцію ще двічі.

3. Відкрийте властивості першого перемикача. Змініть значення властивості Name на optOsvoenie, а значення властивості Caption — на "освоєння нових інформаційних технологій". Для другого перемикача поміняйте значення властивості Name на optVnedrenie і властивість Caption — на "впровадження нових програмних продуктів", для третього — на optDrugoe і "інше:" відповідно.

4. У ToolBox клацніть по елементу управління TextBox і помістіть його в потрібне місце форми. Встановіть для властивості Name цього елементу управліния значення txtDrugoe.

  1. 5. Клацніть правою кнопкою миші по порожньому місцю на формі і в контекстному меню вибрати View Code. У списку подій у верхній частині вікна редактора коду виберіть подію Initialize для UserForm і введіть для нього наступний код:

optOsvoenie.Value = True

txtDrugoe.Visible = False

  1. 6. Для події Change перемикача optDrugoe введіть наступний код:

If optDrugoe.Value = True Then

txtDrugoe.Visible = True

Else

txtDrugoe.Visible = False

End If

7. Перейдіть до коду події Click для CommandButton1 і замість рядка:

sPovod = "освоєння нових інформаційних технологій"

введіть наступний код:

If optOsvoenie.Value = True Then sPovod = _

"освоєння нових інформаційних технологій"

If optVnedrenie.Value = True Then sPovod = _

"впровадження нових програмних продуктів"

If optDrugoe.Value = True Then sPovod = txtDrugoe.Value

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

До пункту 2 завдання (робота з комбінованим списком) :

1. Розмістіть на формі ще один елемент управління Label з написом "Кого:" і настройте для нього шрифт.

2. Клацніть в Toolbox по елементу управління ComboBox і виділіть для нього місце на формі. Присвойте створеному елементу управління ComboBox ім'я cbFIO.

3. Відкрийте код для події Initialize форми UserForm і доповните його наступними рядками:

Dim oColumn As Range

Dim oCell As Range

Set oColumn = Columns("A")

For Each oCell In oColumn.Cells

If oCell.Value <> "" Then

cbFIO.AddItem oCell.Value

End If

Next

cbFIO.ListIndex = 0

4. Перейдіть до коду події Click для CommandButton1 і замість рядка:

sFio = "Іванова Івана Івановича"

введіть наступний код:

sFio = cbFIO.Value

5. Запустите форму на виконання і переконаєтеся, що усе працює нормально.

До пункту 3 завдання (робота з прапорцями) :

1. За допомогою ToolBox помістите на форму два елементи управління CheckBox. Для першого елементу властивості Name присвойте значення chPremia і для властивості Caption — значення "Премія", для другого — chGramota і "Почесна грамота" відповідно.

2. Відкрийте код події Initialize форми UserForm і доповните його сле-дующими рядками:

chPremia.Value = True

chGramota.Value = True

3. Перейдіть до коду події Click для CommandButton1 і замість рядків:

bFlagPremia = True

bFlagGramota = True

введіть наступний код:

bFlagPremia = chPremia.Value

bFlagGramota = chGramota.Value

If bFlagPremia = False And bFlagGramota = False Then

MsgBox "Не вибрана ні премія, ні почесна грамота"!

Exit Sub

End If

4. Запустіть форму на виконання і переконайтеся, що усе працює нормально.

До пункту 4 завдання (застосування смуги прокрутки і дублюючого текстового поля) :

1. Помістіть на форму ще один елемент управління Label з написом "Сума премії :". Присвойте його властивості Name значення lblSum.

2. Помістіть поруч текстове поле і присвойте його властивості Name значення txtSum.

3. Розмістіть під текстовим полем елемент управління ScrollBar і присвойте наступні значення його властивостям:

  1. • Name — значення sbSum;

  2. • Min — значення 0;

  3. • Max — значення 100 000;

  4. • SmallChange — значення 100.

  1. 4. Для події Change елементу управління sbSum введіть наступний код:

txtSum.Value = sbSum.Value

5. Для події Change елементу управління txtSum введіть наступний код:

sbSum.Value = CLng(txtSum.Value)

6. Для події Initialize нашої форми UserForm додайте наступний код:

sbSum.Value = 100

txtSum.Value = 100

7. Для події Change елементу управління chPremia додайте наступний код:

If chPremia.Value = False Then

lblSum.Visible = False

txtSum.Visible = False

sbSum.Visible = False

Else

lblSum.Visible = True

txtSum.Visible = True

sbSum.Visible = True

End If

8. Для коду Click кнопки CommandButton1 замість коду:

nSummaPremii = 100000

впишіть код:

nSummaPremii = sbSum.Value

9. Запустіть форму на виконання і переконаєтеся, що усе працює нормально.

До пункту 5 завдань (застосування кнопки) :

1. Розмістіть на полі ще одну кнопку і налаштуйте значення її властивостей наступним чином : • Name — значення btnEscape;

  1. • Caption — значення "Відміна";

  2. • Cancel — значення True.

2. Для події Click цієї кнопки помістите код

Unload Me

До пункту 6 завдань (зміна заголовка форми) :

1. Клацніть правою кнопкою миші по порожньому місцю на формі і в контекстному меню виберіть Properties.

2. Для властивості Caption налаштуйте значення "Формування наказу про виплату премії".

3. Запустите форму на виконання і переконаєтеся, що накази друкуються правильно.

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