10.6. Стандартні (вбудовані) функції мови vba
У мові VBA є великий набір стандартних (вбудованих) функцій, призначення яких полягає у тому, щоб для заданих значень аргументів (або аргументу, якщо він один) знайти (повернути) відповідне значення функції. Вбудовані функції можна поділити на такі категорії:
математичні функції (табл.10.5); функції для роботи зі стрічковими змінними та функції для роботи з датами та часом, які будуть розглянуті у відповідних темах.
Таблиця 10.5. Математичні функції, реалізовані у VBA
Функція |
Позначення у математиці абож призначення функції |
sin(x) |
sin(x) |
cos(x) |
cos(x) |
tan(x) |
tg(x) |
atn(x) |
arctg(x) |
exp(x) |
ex |
log(x) |
ln(x) |
sqr(x) |
квадратний корінь з х |
abs(x) |
[x] |
sgn(x) |
Знак числа(+1 або -1) |
fix(x) |
Заокруглює число відкиданням дробової частини |
int(x) |
Заокруглює число до найближчого меншого цілого числа |
rindomize |
Ініціює роботу генератора випадкових чисел |
rnd(x) |
Генерує випадкове число |
10.7. Функція MsgBox
Функція MsgBox служить для виводу на екран діалогового вікна з певним повідомленням. Тому ці вікна називають вікнами повідомлень: їх головне призначення – вивести на екран повідомлення. Однак у цьому вікні можуть бути розташовані і інші елементи , наприклад, піктограми, кнопки.
Синтаксис функції MsgBox такий:
MsgBox ( <запрошення > [,< кнопки>] [,<заголовок>] [,<файл довідки>,<зміст>]) ,
або, використовуючи англійську термінологію:
MsgBox ( <prompt>[,<buttons>] [,<title>] [,<help file>,<context>]) .
Аргументи функції MsgBox можуть бути взяті в дужки. Якщо дужки відсутні, то це означає, що функція ніяких значень не повертає, а лише виводить у вікно деяке повідомлення. Якщо ж аргументи беруться в дужки, функція MsgBox додатково повертає цілочисельне значення, як результат клацання по певній кнопці, розташованій у вікні. У цьому випадку після появи на екрані вікна повідомлення ПК чекає, доки користувач клацне по одній із кнопок, розташованих у ньому. Залежно від того, по якій кнопці клацне користувач, функція MsgBox поверне відповідне ціле число (табл. 10.6).
Таблиця 10.6. Числові значення, які повертаються функцією MsgBox
Натиснута кнопка |
Константа |
Значення, яке повертає функція MsgBox |
Ok |
vbOk |
1 |
Отмена |
vbCancel |
2 |
Стоп |
vbAbort |
3 |
Повтор |
vbRetry |
4 |
Пропустить |
vbIgnore |
5 |
Да |
vbYes |
6 |
Нет |
vbNo |
7 |
Розглянемо кожен аргумент функції MsgBox детальніше.
Аргумент <запрошення> ( < prompt >) - єдиний обов’язковий аргумент функції. Це стрічковий вираз або стрічкова константа, тобто набір символів клавіатури, взятий в лапки. Саме ця стрічкова константа або ж значення стрічкового виразу з’явиться у вікні повідомлення.
Аргумент <кнопки> ( < buttons >)- другий аргумент функції MsgBox - є цілочисельним виразом або константою. Цей аргумент не обов’язковий. Якщо аргумент <кнопки> відсутній, то вікно має лише одну кнопку Оk. Якщо ж аргумент <кнопки> є у списку аргументів функції MsgBox, то він дозволяє управляти наступними параметрами вікна:
-
кількістю кнопок у вікні;
-
типом кнопок і їх розміщенням у вікні;
-
піктограмою, яка виводиться у вікні;
-
яка із кнопок призначається кнопкою за замовчуванням;
-
режимом вікна – модальне воно чи ні.
У таблиці 10.7 наведені константи мови VBA та їх значення для задання аргументу <кнопки>. Ці константи умовно можна розділити на чотири групи:
-
перша група констант визначає, які саме кнопки будуть виведені у вікні, тим самим їх кількість і тип;
-
друга група констант дозволяє вибрати стиль піктограми, яка відображується у вікні;
-
третя група констант служить для задання кнопки, яка буде кнопкою за замовчуванням;
-
четверта група констант визначає режим вікна повідомлення.
Аргумент <кнопки> може використовувати лише по одній константі із кожної групи, об’єднавши їх знаком „плюс”. Щоб не помилитися при вводі значень аргументу <кнопки>, доцільно використовувати спливаючу підказку, яка з’являється після введення знаку „+”.
Таблиця 10.7. Константи мови VBA для задання аргументу <кнопки>
Група |
Константа |
Значення |
Опис |
||
Коди командних кнопок |
|||||
1 |
vbOkOnly
vbOkCancel vbAbortRetryIgnore vbYesNoCancel vbYesNo vbRetryCancel |
0
1 2 3 4 5 |
Відображає лише кнопку Ok (встановлюється за замовчуванням) Відображає кнопку Ok і Отмена Відображає кнопки Стоп, Повтор і Пропустить Відображає кнопки Да, Нет, Отмена Відображає кнопки Да, Нет Відображає кнопки Повтор і Отмена |
||
Коди активності кнопок за замовчуванням |
|||||
2 |
vbCritical
vbQuestion
vbExclamation
vbInformation |
16
32
48
64 |
Відображає забороняючи піктограму (білий знак Х у червоному крузі) Відображає запитальну піктограму (знак ? у голубому крузі) Відображає попереджуючу піктограму (знак ! у жовтому трикутнику) Відображає інформаційну піктограму (знак І у голубому крузі) |
||
Коди стилів піктограми |
|||||
3 |
vbDefaultButton1 vbDefaultButton2 vbDefaultButton3 vbDefaultButton4 |
0 256 512 768 |
Перша кнопка активна за замовчуванням Друга кнопка активна за замовчуванням Третя кнопка активна за замовчуванням Четверта кнопка активна за замовчуванням |
Коди модальності вікна |
|||
4 |
VbApplicationModal
VbSystemModal |
0
4096 |
Модальний режим додатку: користувач повинен закрити вікно повідомлення перед продовженням роботи у поточному додатку Системний режим: всі додатки недоступні, поки не закриється вікно повідомлення |
Додаткова |
VbMsgboxHelpButton VbMsgboxSetForeGround
vbMsgboxRight
vbMsgboxRtlReading |
16384 65536
524288
1048576 |
Відображає кнопку Справка Робить вікно повідомлення вікном переднього краю Відображає вікно повідомлення, вирівненим по правому краю Для івриту і арабської мови вказує, що текст виводиться справа наліво |
|
|
|
|
Розглянемо, як користуватися кодами, наведеними у таблиці !1.2. Звичайно, розробник проекту повинен чітко уявляти, яким він хоче бачити вікно повідомлення і які кнопки з першого розділу таблиці повинні бути у вікні. Якщо кнопок буде більше, ніж одна, потрібно визначитися з тим, яка з них буде активною за замовчуванням, вибравши відповідну константу з другого розділу таблиці. Командна кнопка, активна за замовчуванням, автоматично вважається натиснутою, якщо після відображення вікна повідомлення буде натиснута клавіша Enter. Командні кнопки розміщуються у вікні у тому порядку, в якому вони наведені у першому розділі таблиці 10.7. Далі розробник проекту у третьому розділі таблиці вибирає константу, яка додає у вікно повідомлення підходящу піктограму, а з четвертого розділу вибирає константу, яка визначає, режим роботи додатку. Додавши ці константи або відповідні їм числові значення, отримаємо суму, яка і слід використати у якості аргументу <кнопки>. Наприклад, нехай потрібно вивести діалогове вікно повідомлення, розмістивши в ньому кнопки Yes та No, кнопку No зробити активною за замовчуванням, додати попереджувальну піктограму і зробити це вікно програмним модальним. Наводимо процедуру MsgBox1(), яка розв’язує цю задачу.
Public Sub MsgBox1()
'Вивчаємо аргумент кнопки вікна повідомлення
Dim theButtons As Integer
Dim S As String * 10
Dim SS As String * 15
theButtons = vbYesNo + vbDefaultButton2 + vbExclamation + _
vbAhhlscationModal
MsgBox "Вигляд вікна повідомлення", theButtons
End Sub
Результат роботи процедури наведено на рис.10.4.
Рис. 10.4. Вікно повідомлення, отримане за допомогою функції MsgBox.
Цю процедуру можна подати і в іншому вигляді, враховуючи, що константі vbYesNo відповідає значення 4, константі vbDefaultButton2 відповідає значення 256, константі vbExclamation відповідає значення 48, константі vbApplicationModal відповідає значення 0, отже, сума всіх значень дорівнює 4+256+48+0 =308.
Аргумент <заголовок> (<title>) є необов’язковим. Це стрічковий вираз або стрічкова константа, значення якої виводиться у заголовку вікна. Інакше кажучи, у такий спосіб формується назва вікна повідомлення. Якщо цей аргумент не задано, то у заголовку вікна виводиться назва того додатку, у якому створюється проект, наприклад, Microsoft Excel.
Аргументи <файл довідки>,<зміст> (<<help file>,<context>>) також є необов’язковими і можуть бути одночасно присутніми у списку аргументів, або ж одночасно бути відсутніми. Аргумент <файл довідки> це стрічковий вираз або стрічкова константа, яка ідентифікує назву файла довідки. У цьому файлі розробник проекту розміщує довідкову систему проекту у вигляді пронумерованих повідомлень. Аргумент <зміст> - це цілочисельний вираз або константа, яка означає номер повідомлення із довідкової системи.