Використання MsgBox для забезпечення діалогу з можливістю вибору

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

<змінна> = MsgBox ( Text [,Type [,Title]] )

Характерною відмінністю MsgBox-функції від MsgBox-процедури є те, що її аргументи записують в дужках, а сама функція використовується у правій частині оператора присвоєння. Її результат може набувати значень:
1, якщо натиснули кнопку “Ok”;
2, якщо натиснули кнопку “Cancel”;
3, якщо натиснули кнопку “Abort”;
4, якщо натиснули кнопку “Retry”;
5, якщо натиснули кнопку “Ignore”;
6. якщо натиснули кнопку “Yes”;
7, якщо натиснули кнопку “No”.

Подальша обробка реакції користувача на повідомлення здійсднюється за допомогою умовного оператора If, наприклад,
Dim a As Integer
a = MsgBox(“Бажаєте продовжити?”, 32 + 4)
If a = 6 Then
‘Інструкції, які слід виконати,
‘якщо користувач натиснув “Yes”(Так)

Else
‘Інструкції, які слід виконати,
‘якщо користувач натиснув “No”(Ні)
‘або закрив вікно кнопкою “х”

End If

Можна скористатися також оператором вибору Select, наприклад
Dim a As Integer
a = MsgBox(“Бажаєте продовжити?”, 32 + 3)
Select Case a
Case 6
‘Інструкції, які слід виконати,
‘якщо користувач натиснув “Yes”(Так)

Case 7

‘Інструкції, які слід виконати,
‘якщо користувач натиснув “No”(Ні)

Case 2
‘Інструкції, які слід виконати,
‘якщо користувач натиснув “Cancel”(Відміна)
‘або закрив вікно кнопкою “х”

End Select

Нагадаємо, що параметр Type визначається як сума трьох цілих чисел:

  • Порядок кнопки за замочуванням
    128 – перша кнопка є кнопкою за замочуванням;
    256 – друга кнопка є кнопкою за замочуванням;
    512 – третя кнопка є кнопкою за замочуванням.
  • Вигляд значка на вікні повідомлення
    16 – додає до вікна заборонний знак;
    32 – додає до вікна значок із знаком питання;
    48 – додає до вікна значок із знаком оклику;
    64 – додає до вікна інформаційний значок
  • Кількість і назви кнопок:
    0 – відображається тільки кнопка «OK»;
    1 – відображаються кнопки «OK» і «Cancel»;
    2 – відображаються кнопки «Abort», «Retry» і «Ignore»;
    3 – відображаються кнопки «Yes», «No» і «Cancel»;
    4 – відображаються кнопки «Yes» і «No»;
    5 – відображаються кнопки «Retry» і «Cancel».
    Значення 6 та 7 прирівнюються до 0.

Паралельне використання MsgBox-процедури та MsgBox-функції у OpenOffice Basic є одним з найпростіших прикладів реалізації одного з основних принципів об’єктно-орієнтованого програмування – поліморфізму, який вказує, що однойменні методи для різних об’єктів можуть виконувати різну дію.