Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

VBA Лаб.р.2_укр

.pdf
Скачиваний:
6
Добавлен:
07.02.2016
Размер:
922.26 Кб
Скачать

Function F(x As Double, y As Double) As Double

F = x+y

End Function

Sub DemoFun()

MsgBox F(1,3) ' Виводить вікно повідомлення з результатом

'обчислення функції F при значеннях

'x=1 і y=3

End Sub

Передача параметрів за посиланням та значенням

При виклику процедури або функції до неї передаються деякі параметри. Всередині процедури цим параметрам можуть бути присвоєні якісь значення, які збережуться в них після виходу із процедури або функції. Таким чином, за замовчуванням при передачі змінних в якості параметрів до процедури або функції передаються фізичні адреси цих змінних. Тому всередині процедури або функції їх вміст може бути модифікований. Для явної вказівки передачі параметрів до процедури за посиланням використовується ключове слово ByRef.

Іншим способом передачі параметрів до процедури є передача їх за значенням. При цьому способі передачі параметрів до процедури попадають не самі змінні, а їх значення. Передача параметрів за значенням задається ключовим словом ByVal. В наступному прикладі показана відмінність передачі параметрів за посиланням від передачі параметрів за значенням.

Sub DemoByValByRef(ByVal a, b, ByRef с)

'а передається за значенням

'за замовчуванням b передається за посиланням

'с передається за посиланням

а = а + 1 b = b + a

с = с + а End Sub

Sub Test()

 

a = 1: b = 10: c = 100

 

DemoByValByRef a, b, c

 

MsgBox a

' Відобразиться 1

MsgBox b

' Відобразиться 11

MsgBox c

' Відобразиться 101

End Sub

 

11

Вбудовані діалогові вікна

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

Вікно введення

Функція ІnputBox виводить на екран діалогове вікно, яке містить повідомлення, поле введення і дві кнопки: OK і Cancel (рис. 1).

Рис. 1

Ця функція встановлює режим очікування введення тексту користувачем і натискання кнопки. Потім, при натисканні кнопки ОК, повертає значення типу Strіng, яке містить текст, введений в поле введення; при натисканні кнопки Cancel повертає порожній рядок (Empty).

InputBox (Prompt [,Title] [,Default] [,Xpos] [,Ypos] [,Helpfile, Context])

де

Prompt – строковий вираз, який відображається як повідомлення в діалоговому вікні.

Title – строковий вираз, що відображається в заголовку діалогового вікна. Якщо цей параметр опущений, то в заголовку розміщується ім'я додатка.

Default – строковий вираз, який відображається в полі введення за замовчуванням, якщо користувач не введе інший рядок. Якщо цей параметр опущений, то поле введення за замовчуванням порожнє.

Xpos – числовий вираз, який задає відстань по горизонталі між лівою границею діалогового вікна і лівим краєм екрана. Якщо цей параметр опущений, то діалогове вікно вирівнюється по центру екрана по горизонталі.

12

Ypos – числовий вираз, який задає відстань по вертикалі між верхньою границею діалогового вікна і верхнім краєм екрана. Якщо цей параметр опущений, то діалогове вікно міститься по вертикалі приблизно на одну третину висоти екрана.

Helpfile – строковий вираз, який визначає ім'я файлу довідки, що містить довідкові відомості про дане діалогове вікно. Якщо цей параметр зазначений, то необхідно вказати також параметр Context.

Сontext – числовий вираз, який визначає номер відповідного розділу довідкової системи. Якщо цей параметр зазначений, то необхідно вказати також параметр Helpfіle.

Параметри, зазначені у квадратних дужках, необов'язкові.

Приклад коду, який задає відображення на екрані вікна введення рис. 1 (значення, що вводиться в поле введення присвоюється змінній n):

Sub DemoInputBox1() Dim n As String

n = InputBox("Введите ваше имя", "Пример окна ввода") End Sub

Вікно повідомлення

Процедура MsgBox виводить на екран діалогове вікно, яке містить повідомлення, встановлює режим очікування натискання користувачем кнопки, а потім повертає значення типу Іnteger, що вказує яка кнопка була натиснута.

MsgBox (Prompt [,Buttons] [,Title] [,Helpfile, Context])

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

Buttons – числовий вираз, що представляє суму констант, які вказують кількість і тип кнопок та тип значка, що відображаються, основну кнопку і модальність вікна повідомлення. Значення за замовчуванням цього параметра дорівнює 0. Значення констант, що визначають кількість і тип кнопок та тип значка наведені в таблицях нижче.

Title – строковий вираз, який відображається в заголовку діалогового вікна. Якщо цей параметр опущений, то в заголовку розміщується ім'я додатка.

Helpfile – строковий вираз, який визначає ім'я файлу довідки, що містить довідкові відомості про дане діалогове вікно. Якщо цей параметр зазначений, необхідно вказати також параметр Context.

Context – числовий вираз, який визначає номер відповідного розділу довідкової системи. Якщо цей параметр зазначений, то необхідно

13

вказати також параметр Helpfіle.

Параметри, зазначені у квадратних дужках, необов'язкові.

Можливі значення параметра Buttons процедури MsgBox, який визначає кнопки, що відображаються в діалоговому вікні:

Константа

Кнопки, що відображаються

VbOKOnly

VbOKCanсel

VbAbortRetryIgnore

VbYesNoCancel

VbYesNo

VbRetryCancel

Можливі значення параметра Buttons процедури MsgBox, який визначає інформаційний знак, що відображається в діалоговому вікні:

Константа

Значок повідомлення

VbCritical

VbQuestion

VbExclamation

VbInformation

Можливі значення параметра Buttons процедури MsgBox, який визначає основну кнопку в діалоговому вікні:

14

Константа

 

Номер основної кнопки

 

 

 

 

 

 

vbDefaultButton1

 

 

1

 

 

 

 

 

 

vbDefaultButton2

 

 

2

 

 

 

 

 

 

vbDefaultButton3

 

 

3

 

 

 

 

Приклади вікон повідомлень

 

Sub DemoMsgBox()

 

 

 

Dim x As Variant

 

 

 

Dim y As Double

 

 

 

x = InputBox("Введите х")

 

 

 

y = x^2

 

 

 

MsgBox y

 

 

' Рис.2

MsgBox "х=" & x & vbNewLine & "у=" & y

 

' Рис.3

MsgBox "y=" & y, vbInformation

 

 

' Рис.4

MsgBox "y=" & y, vbInformation + vbDefaultButton1 + vbYesNo ' Рис.5

MsgBox "y=" & y, vbInformation, "Нахождение квадрата"

' Рис.6

End Sub

 

 

 

Рис. 2

Рис. 3

Рис. 4 15

Рис. 5

Рис. 6

Визначення натиснутої кнопки у вікні повідомлення

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

Можливі значення константи, що повертає функція MsgBox в залежності від того, яка кнопка діалогового вікна натиснута:

Константа

Натиснута кнопка

vbOK

vbCancel

vbAbort

vbRetry

vbIgnore

vbYes

16

vbNo

Далі наведений приклад використання функції MsgBox з аналізом натиснутої кнопки. В цьому прикладі на екрані відображається діалогове вікно з двома кнопками Да і Нет та значком питання. При натисканні кнопки Да документ відображається в режимі розмітки, а при натисканні кнопки Нет – у звичайному режимі.

Sub DemoYesNo()

Dim answer As Integer

answer = MsgBox("Отобразить документ в режиме разметки", _ vbYesNo + vbQuestion + vbDefaultButton1, _

"Режим отображения документа") Select Case answer

Case vbYes

ActiveWindow.View.Type = wdPrintView Case vbNo

ActiveWindow.View.Type = wdNormalView End Select

End Sub

17

ЗАВДАННЯ ДО ЛАБОРАТОРНОЇ РОБОТИ

ЗАВДАННЯ 1

Створити функцію користувача. Вставити цю функцію в чарунку робочого аркуша.

y 2sin( x) sin(3 x) 3x

ТЕХНОЛОГІЯ ВИКОНАННЯ

1.Відкрийте Mіcrosoft Excel. Збережіть робочу книгу (Файл – Сохранить как), вибравши ім'ям файлу своє прізвище.

2.Виберіть меню Сервис – Макрос – Макросы. Введіть ім'я створюваного макросу – функция, натисніть кнопку Создать (рис. 7).

Рис. 7

3.Відкриється вікно додатка VBA (рис. 8).

Рис. 8 18

4.Існуючий текст коду макросу

Sub функция() End Sub

замініть на текст програми (рис. 9), що обчислює задану функцію, використовуючи стандартні функції мови VBA:

Public Function функция(x)

функция =2* Sin(Application.Pi() * x) + (Sin(Application.Pi() * 3 * _ x)) / (3 * x)

End Function

Рис. 9

5.Збережіть (File - Save).

6.Щоб перевірити роботу створеної функції, закрийте додаток VBA,

ввійдіть в Mіcrosoft Excel.

7.В чарунку А1 введіть 0,5.

8.Виділіть чарунку В1, виберіть меню Вставка – Функция, відкриється

Мастер функций – шаг 1 из 2.

9.В Категории виберіть Полный алфавитный перечень, в переліку знайдіть функция (рис. 10) і натисніть ОК.

19

Рис. 10

10.Введіть в поле введення адресу чарунки А1 і натисніть ОК (рис. 11).

Рис. 11

В чарунці В1 з’явиться результат.

11.Збережіть робочу книгу.

20

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