- •Операції вводу-виводу.
- •2. Оператори
- •3. Змінні і типи даних
- •4. Константи
- •5.3. Оператор GoTo
- •6. Робота з циклами
- •8.2. Зона видимості процедур
- •8.5. Виклик і завершення роботи процедур
- •9.3. Стрічкові функції
- •9.2. Функції перетворення і перевірки типів даних
- •9.4. Функції для роботи з числовими значеннями
- •9.5. Функції для роботи з датою і часом
- •9.6. Функції для форматування даних
- •9.7. Функції для організації взаємодії з користувачем
- •9.8. Функції — замінники синтаксичних конструкцій
- •9.10. Функції для роботи з файловою системою
- •9.11. Інші функції vba
9.6. Функції для форматування даних
Для форматування даних у вашому розпорядженні функція Format() і цілий набір функцій, які розпочинаються з префікса Format... (FormatNumber(), FormatCurrency(), FormatDateTime() і т. п.) Синтаксис функції Format() виглядає так:
Format(вираз, "формат")
Ця функція приймає вираз і форматує його відповідно до параметру формат.
Декілька прикладів використання Format() :
Format(15/20, "Percent")
Format(Date, "Long Date")
Format(1, "On/Off")
Format(334.9, "###0.00")
Format("Просто текст" ">" )
Особлива ситуація — коли треба, щоб дата відображалася на комп'ютерах користувачів однаково незалежно від регіональних налаштувань. В якості рішення можна використовувати функцію DatePart(), при допомозі її перевести дату "по частинах" в текстовий формат і склеїти потрібним чином.
9.7. Функції для організації взаємодії з користувачем
У багатьох програмах VBA необхідно забезпечити взаємодію з користувачем — проінформувати його про щось і, можливо, отримати від нього реакцію у відповідь . В принципі, для користувача можна просто вивести текст у вікні додатка (наприклад, в поточному документі Word) або скористатися формою і елементами управління.
Найпростішою спосіб вивести інформацію користувачеві — використати вбудовану функцією VBA MsgBox(). Її синтаксис виглядає так:
MsgBox(Текст [, кнопки] [, заголовок_вікна] [, файл_довідки, мітка_в_файлі_довідки])
Можливостей у MsgBox() досить багато:
можна відображати різну кількість кнопок (OK, Cancel, Abort, Retry, Ignore, Yes, No);
можна показувати символи Critical (червоний круг з хрестом), Exclamation (знак оклику в жовтому трикутнику), Question (питальний знак), Information (буква "I");
можна вибирати кнопку за умовчанням;
можна робити вікно модальним або звичайним.
Залежно від того, на яку кнопку натиснув користувач, функція повертає відповідне значення (всього 7 варіантів). Приклад повернення значення від MsgBox() може бути таким:
Dim nVar As Integer
nVar = MsgBox ("робитимемо"?, vbInformation + vbOKCancel,
_ "Демонстраційне вікно повідомлення")
Якщо значення nVar дорівнює 1, то користувач натиснув OK, якщо 2, то Відміна (Cancel).
Іноді (наприклад, при пакетній обробці даних) хотілося б, щоб вікно повідомлення через деякий час закривалося само собою. Це можна зробити за допомогою методу Popup() об'єкту Wscript.Shell. Для цього в проект через меню Tools | References треба додати посилання на Windows Script Host Object Model, а після цього використовувати наступний код:
Dim oShell As New WshShell
oShell.Popup "Test", 5
У іншому функціональність вікна, що отримало, однакова з MsgBox(). Код повернення, якщо користувач не натиснув ні на яку кнопку, рівний − 1. Найпростіший спосіб прийняти інформацію від користувача — скористатися функцією InputBox(). Усе дуже просто:
Dim InputName
InputName = InputBox("Введіть Ваше ім'я")
MsgBox ("Ви ввели: " & InputName)
Для InputBox() можна вказати текст запрошення, заголовок вікна, значення за умовчанням, місцезнаходження вікна і файл довідки. Не забувайте, що усе що вводиться користувачем InputBox() автоматично переводить в тип даних String, може знадобитися перетворення.
Можна привернути увагу користувача звуковим сигналом. Для цієї мети використовується оператор Beep :
Dim i
For i = 1 To 3
Beep
Next i
Якщо треба забезпечити складнішу взаємодію з користувачем, можна подумати про застосування форми, можливостей самого документу Office або помічника (Office Assistant). Дуже потужні можливості забезпечує і застосування об'єктної моделі Internet Explorer.
