Матеріали сайту
Зараз обговорюють
Спасибі дуже корисна стаття
А ще щось планується подібного найближчим часом?
Дякую за підтримку, радий що Вам сподобалось!
Так маю вже майже дороблений проект по управлінні Audio файлом, на заміну стандартним клавішам управління HTML5, але ще не встиг відтестувати програвання файлів з інтернету, поки лише локально працює
Надіюсь найближчим часом дороблю й закину

VBA : Взаємодії з користувачем, функції виведення інформації MsgBox і Popup
У багатьох програмах VBA необхідно забезпечити взаємодію з користувачем - проінформувати його про щось і (можливо) отримати від нього відповідну реакцію. В принципі, для користувача можна просто вивести текст у вікні програми, або скористатися формою і елементами управління. У цій частині ми розглянемо тільки застосування для цієї мети вбудованих функцій VBA.
MsgBox
Найпростіший спосіб вивести інформацію користувачеві - скористатися вбудованою функцією VBA MsgBox. Ми вже використовували її в попередніх статтях, але розберемо її синтаксис більш детально:
MsgBox Prompt [, Buttons] [, Title] [, HelpFile, Context]
Prompt - Потрібно. Вираз типу String, що відображається в діалоговому вікні у вигляді повідомлення. Максимальна довжина параметра Prompt становить приблизно 1024 знака і залежить від ширини використовуваних знаків.
Buttons - Не обов'язково. Числове вираження, що є сумою значень, які задають номер і тип відображуваних кнопок, стиль використовуваного значка, тип кнопки за замовчуванням і ознака модальності вікна повідомлення. Якщо параметр Buttons опущений, то за умовчанням використовується нульове значення.
Title - Не обов'язково. Вираз типу String, що відображається в рядку заголовка діалогового вікна. Якщо аргумент Title опущений, то в рядок заголовка поміщається назва програми.
HelpFile - Не обов'язково. Параметр визначає файл довідки, який буде використовуватися для діалогового вікна (вказуємо в лапках посилання на потрібний файл). Крім того, при використанні цього параметру параметр "Context" стає обов'язковим і повинен бути використаний.
Context - являє собою числовий параметр, який визначає номер, присвоєний відповідній довідці. Це необов'язковий параметр, але він стає обов'язковим, якщо використовується параметр.
Примітка: HelpFile має бути в форматі ".chm" його можна створити за допомогою програмних засобів, таких як HTM2CHM и HTML Help Workshop
Можливостей у MsgBox досить багато:
- можна відображати різний кількість кнопок (OK, Cancel, Abort, Retry, Ignore, Yes, No)
- можна показувати символи Critical, Warning, Question, Information
- можна вибирати кнопку за замовчуванням
- можна робити вікно модальним або звичайним.
Prompt виведення в кілька рядків
Дуже часто виникає необхідність форматування тексту для виведення її на екран користувача, для цього можна використати наступні способи:
- Chr(10) або vbLf - Новий рядок (падає курсор вниз на один рядок)
- Chr(13) або vbCr - Повернення каретки - (переміщує курсор вліво більшу сторону)
- Chr(13) & Chr(10) або vbCrLf - Рекомендована до використання комбінація
- vbNewLine - Являє символ нового рядка для функцій друку і відображення.
Buttons варіанти вибору:
Назва кнопки | Числовий символ | Опис |
---|---|---|
vbOKOnly | 0 | Відображається лише кнопка OK |
vbOKCancel | 1 | Відображаються кнопки OK і "Скасувати" |
vbAbortRetryIgnore | 2 | Відображаються кнопки "Перервати", "Повторити" і "Пропустити" |
vbYesNoCancel | 3 | Відображаються кнопки "Так", "Ні" і "Скасувати" |
vbYesNo | 4 | Відображаються кнопки "Так" і "Ні" |
vbRetryCancel | 5 | Відображаються кнопки "Повторити" і "Скасувати" |
vbCritical | 16 | Можна бачити піктограму повідомлення про критичну помилку |
vbQuestion | 32 | Значок попередження з запитом |
vbExclamation | 48 | Значок попередження |
vbInformation | 64 | Можна бачити піктограму інформаційного повідомлення |
vbDefaultButton1 | 0 | Перша кнопка є кнопкою за замовчуванням |
vbDefaultButton2 | 256 | Друга кнопка є кнопкою за замовчуванням. |
vbDefaultButton3 | 516 | Третя кнопка є кнопкою за замовчуванням. |
vbDefaultButton4 | 768 | Четверта кнопка є кнопкою за замовчуванням. |
vbApplicationModal | 0 | Додаток є модальним. Перед продовженням даної програми користувач повинен відповісти в вікні повідомлення |
vbSystemModal | 4096 | Система є модальної. Всі додатки припиняються, поки користувач не відповість у вікні повідомлення |
vbMsgBoxHelpButton | 16384 | Додає до діалогового вікна кнопку Довідка. При натисканні на цю кнопку відкривається файл, який заданий в аргументі HelpFile, в розділі, заданому аргументом Context |
MsgBoxSetForeground | 65536 | Вказує, що вікно повідомлення відображається поверх інших вікон |
MsgBoxRight | 524288 | Текст вирівнюється по правому краю |
MsgBoxRtlReading | 1048576 | Вказує, що текст повинен виводитися справа наліво, аналогічно арабської і єврейської системам читання |
Buttons повернення вибраної кнопки:
Функція MsgBox може повертати одне з наступних значень за допомогою яких ми зможемо ідентифікувати кнопку яку користувач натиснув у вікні повідомлення. Для цього достатньо пристроїти MsgBox певній змінній яка збереже вибраний варіант, наприклад:
x = MsgBox("Виберіть кнопку:", vbYesNo)
Примітка: При присвоєнні змінній функції MsgBox текст функції необхідно загорнути в дужки
в подальшому в залежності від вибору можна виконувати різні частини коду:
Натиснута кнопка | Повернене значення | Опис |
---|---|---|
vbOK | 1 | була натиснута OK |
vbCancel | 2 | була натиснута Скасувати |
vbAbort | 3 | була натиснута Перервати |
vbRetry | 4 | була натиснута Повторити |
vbIgnore | 5 | була натиснута Пропустити |
vbYes | 6 | була натиснута Так |
vbNo | 7 | була натиснута Ні |
Приклади застосування
Приклад 1:
Виведемо користувачу повідомлення про помилку:
Sub example01() MsgBox "Текст нашого повідомлення про помилку", vbAbortRetryIgnore + vbCritical, "Помилка" End Sub
Приклад 2:
Виведемо користувачу повідомлення про помилку і обробимо вибрану кнопку:
Sub example01() Dim ErrorMsg As Integer ErrorMsg = MsgBox("Текст нашого повідомлення про помилку", vbAbortRetryIgnore + vbCritical, "Помилка") If ErrorMsg = 3 Then MsgBox "Програму буде завершено!", vbInformation, "Кінець" Exit Sub End If End Sub
при натисканні кнопки Перервати програма завершується з виводом відповідного повідомлення
Popup
Закриття вікна через певний час
Функція Popup по функціональності однакова з функцією MsgBox, але в неї є одна перевага яку й розглянемо нижче.
Іноді (наприклад, при пакетній обробці даних) хотілося б, щоб вікно повідомлення через деякий час закривалося само собою. Це можна зробити за допомогою методу Popup об'єкта Wscript.Shell. Для цього в проект через меню References потрібно додати посилання на Windows Script Host Object Model (файл C: WINNT system32 wshom.ocx), а після цього використовувати наступний код:
Dim oShell As New WshShell oShell.Popup Prompt [, Timeout] [, Title] [, Buttons]
Timeout - Не обов'язково. Параметр який визначає тривалість життя повідомлення, вимірюється в секундах
Код повернення, якщо користувач не натиснув ні на яку кнопку, дорівнює -1.
Приклади застосування
Виведемо користувачу повідомлення про помилку і закриємо його через 10 секунд:
Sub example01() Dim oShell As New WshShell oShell.Popup "Текст нашого повідомлення про помилку", 10, "Помилка", vbAbortRetryIgnore + vbCritical End Sub
Попередня стаття: Перевірка умов. Оператор Select Case | Наступна стаття: Взаємодії з користувачем, функції введення інформації InputBox |
Про нас
"Programmers World" розроблено з метою полегшення в освоєнні навичок програмування, та поширення матеріалів з сфери ІТ Українською мовою.
Кожен бажаючий може безкоштовно користуватися ресурсами сайту, щоб:
- Вивчати теоретичні аспекти мов програмування
- Переглядати практичне застосування теорії при виконанні різних міні проектів з відкритим кодом
- Розміщати свої завдання на форумі для допомоги в їх реалізації, або готового коду який може бути корисний іншим користувачам
- Спілкуватись з іншими користувачами та обмінюватись досвідом
Сайт функціонує на безопланій основі та ентузіазмі розробника, якщо Ви бажаєте долучитись до розвитку даного проекту то можете пожертвувати кошти на рахунки розміщені в блоці "Допомога сайту".
Сайт
Зареєстровані користувачі можуть скористатися системою діалогів, в профілі користувача, для отримання потрібної інформації. Написати!
Також Ви можете використати форми відправки Зауважень та Пропозицій.
Електронна пошта
Ви можете звертатись на нашу поштову скриньку site.programmersworld@gmail.com
Коментарі:
Для даної статті відсутні коментарі