Построение диалогов
Диалоги являются полностью нужным средством для увеличения маневренности и гибкости макропрограмм.
Они представлены 2-мя командами: MsgBox (диалог с клавишами) и InputBox (для ввода значений).
Для начинающих программистов этого полностью довольно.
Синтаксис установок:
MsgBox(prompt[, buttons] [, title] [, helpfile, context])
InputBox(prompt[, title] [, default] [, xpos] [, ypos] [, helpfile, context])
Можно увидеть, что отдельные элементы очень идентичны и повторяются:
prompt — единственный неотклонимый элемент (он задает текст сообщения, выводимого снутри окна диалога);
title — заголовок окна, обобщающий вопросец диалога;
helpfile. — ваша подсказка, обсуждение (и создание) которой выходит за рамки изучаемого материала.
InputBox
Диалог предназначен для ввода единичного символьного (строкового) значения. Как видно из основного синтаксиса:
InputBox(prompt[, title] [, default] [, xpos] [, ypos]),
неотклонимым является лишь поясняющий текст (prompt).
Возникает возможность указать значение по дефлоту (default), третировать которым не стоит. Ведь в почти всех вариантах оно быть может предсказано и юзеру не придется заниматься мучительным вводом.
Также можно указать в твипсах (1/20 часть пикселя, а не пт, как принято в полиграфии) координаты окна (xpos, ypos). Если надлежащие координаты опущены, то диалог центрируется относительно горизонтали и опускается приблизительно на третья часть экрана по вертикали.
Применять команду следует в виде функции, потому что введенное значение должно быть присвоено переменной.
Итог будет смотреться так:
Если пристально поглядеть на текст программки, то закономерным будет вопросец: переменной x (числового типа Single) будет передаваться строковое значение, что является неверным?
Но в VBA это будет обработано верно, если юзер введет хоть какое число: преобразование пройдет само собой. Если же он введет буковкы либо нажмёт клавишу отмены (Cancel), то переменной будет присваиваться строковое значение, что породит ошибку:
Избежать схожей ситуации можно 2-мя методами, предоставляющими разные способности.
- преобразованы в 0,
- если в начале строки введены числа («125xyz»), то строчка преобразуется в число (125).
При нажатии на клавишу Cancel будет возвращена пустая строчка («»), преобразуемая в 0.
Если таковой ввод допустим в принципе, то нет способности закончить выполнение программки без доп запроса юзеру.
- В строке, выделенной красноватым, проведен анализ результата ввода и выход из программки при пустой строке. Таковой подход полностью применим и для варианта, когда юзер запамятовал задать значение. Тут ему быть может задан вопросец о необходимости прерывания программки.
- Значение, сохраненное в xVal, можно употреблять и в предстоящем. В том числе для детализированной разборки либо анализа, в том числе на предмет корректности ввода.
- Возникает возможность ввести несколько значений, к примеру, через запятую, которые позже можно рассматривать и употреблять в согласовании с планом программера.
- Занята доборная память, что является платой за функциональность.
InputBox в Excel VBA
К огорчению, объектная модель Word и Excel не совпадают, в связи с чем приходится гласить, что в Excel можно пользоваться ещё одним методом:
-
Список типов:
- 0 = formulas
- 1 = numbers
- 2 = strings
- 4 = logical values
- 8 = cell references
- 16 = error values
- 64 = arrays
MsgBox
Вспомним синтаксис команды:
MsgBox(prompt[, buttons] [, title] [, helpfile, context])
Атрибут buttons представляет собой сумму 3-х (пореже — наиболее) целых чисел, значащих: набор клавиш, картину, клавишу по дефлоту. Крайняя достаточно принципиальна, потому что почти все юзеры невнимательно относятся к надписям в диалоге, и еще разумнее активизировать для него ту клавишу, нажатие на которую требуется почаще. Заместо чисел можно употреблять системные переменные памяти. Подробная информация приведена в таблице.
Переменная Word | Значение | Описание |
vbOKOnly | 0 | Вывести лишь клавишу OK |
vbOKCancel | 1 | Вывести клавиши OK и Cancel |
vbAbortRetryIgnore | 2 | Вывести клавиши Abort, Retry и Ignore |
vbYesNoCancel | 3 | Вывести клавиши Yes, No и Cancel |
vbYesNo | 4 | Вывести клавиши Yes и No |
vbRetryCancel | 5 | Вывести клавиши Retry и Cancel |
vbCritical | 16 | Вывести картину Critical Message |
vbQuestion | 32 | Вывести картину Warning Query |
vbExclamation | 48 | Вывести картину Warning Message |
vbInformation | 64 | Вывести картину Information Message |
vbDefaultButton1 | 0 | По дефлоту активна 1‑я клавиша |
vbDefaultButton2 | 256 | По дефлоту активна 2‑я клавиша |
vbDefaultButton3 | 512 | По дефлоту активна 3‑я клавиша |
vbDefaultButton4 | 768 | По дефлоту активна 4‑я клавиша |
vbApplicationModal | 0 | Диалог модален для Word: для продолжения работы в приложении и самого макроса необходимо надавить на одну из клавиш |
vbSystemModal | 4096 | Диалог модален для Windows: все приложения прекращают работу до того времени, пока юзер не нажмет на одну из клавиш |
vbMsgBoxHelpButton | 16384 | Добавляет в диалог клавишу Help (Справка) |
VbMsgBoxSetForeground | 65536 | Переводит окно диалога на фронтальный план (практическое применение непонятно) |
vbMsgBoxRight | 524288 | Надписи выравниваются на право |
vbMsgBoxRtlReading | 1048576 | Для языков, читаемых справа влево |
Как видно, если не задавать для клавиш ничего, то получится диалог с клавишей ОК и без пиктограммы. К слову, он является одним из более нередко применяемых вариантов для вывода инфы о результатах работы программки как в процессе её отладки, так и при обыкновенном режиме работы.
Пример: MsgBox «Значение х достигнуло » & x
Диалог будет смотреться так:
Необходимо подчеркнуть, что клавиша ОК владеет увлекательным свойством: её можно надавить как мышкой, так и кнопками Enter, Space и Esc.
Потому что можно вывести диалог с огромным многообразием клавиш, требуется посодействовать программке разобраться, какая из их была нажата. В этом случае команда запускается в виде функции, возвращающей значение (целое число) переменной в памяти. Дальше можно проанализировать его и принять решение о последующих действиях
Ниже приведен перечень значений, возвращаемых функцией MsgBox() в зависимости от нажатой в диалоге клавиши.
Значение | Константа Word | Надпись на кнопочке |
1 | vbOK | OK |
2 | vbCancel | Cancel |
3 | vbAbort | Abort |
4 | vbRetry | Retry |
5 | vbIgnore | Ignore |
6 | vbYes | Yes |
7 | vbNo | No |
Диалог будет смотреться так:
Можно сказать, что в нем допущена интерфейсная ошибка, потому что нажатие клавиши Esc не дозволит закрыть диалог. Для комфортности лучше употреблять сразу клавиши Yes, No и Cancel. Для доработки пригодится лишь поменять в тексте программки 4 на 3: ведь нажатие на Cancel обработается также, как и No (выход из программки).
Направьте внимание! Заместо 4+48, можно было бы записать сходу итог сложения (52). Программка выполнилась бы чуточку резвее, но редактирование человеком сделалось бы труднее. Также можно поменять эту форму сложением программных констант: vbYesNo+vbExclamation, что легче осознать при чтении.
Безупречным(?) решением было бы добавление клавиши Cancel, как показано ниже.
Copyright © 1993–2021 Мацкявичюс Д.А. Все права защищены.
Никакая часть веб-сайта не быть может воспроизведена никаким методом без письменного разрешения правообладателя и очевидной ссылки на данный ресурс.
Formation EXCEL VBA
Le langage VBA, ou Visual Basic for Applications, est le langage de programmation commun à toutes les applications de la suite bureautique Microsoft Office. Pendant la formation EXCEL VBA, vous apprendrez a créer des scripts, programmes, afin d’améliorer votre utilisation.
Proche de chez vous
Éligible au CPF
DURÉE CONSEILLÉE DE FORMATION
3 jours
PUBLIC CONCERNÉ
Tout Public
PRÉREQUIS
Avoir un ordinateur équipé de Wifi
Passeport de Compétences Informatique Européen
Domaine : Tableurs
OBJECTIFS
Être capable de valider et vérifier les données des tableurs – Être capable d’améliorer la productivité en travaillant avec des plages de cellules prénommées, des macros et des modèles – Être capable d’utiliser les fonctions de liaison, d’intégration et d’importation pour intégrer les données – Être capable de collaborer et examiner les tableurs – Appliquer les fonctions de sécurité du tableur – Être capable de développer en VBA – Être capable d’améliorer la productivité avec des scripts VBA.
PROGRAMME
LANGAGE VBA
Variables
Types de données
Conditions
Boucles
Fonctions
Classes
Tableaux
String
Date
EXCEL AVANCE
Formatage conditionnel
Fonctions
Diagrammes
Manipuler les tableaux et les listes
Valider les données
Intégrer les données
Sécuriser les données
MACRO DANS EXCEL
Intérêt des macros
Enregistrement
Exécution
Edition
Exécution locale ou globale
EDITEUR VISUAL BASIC
Environnement de développement
Utiliser des scripts VBA dans Excel
Architecture d’une application VBA
Commenter et documenter ses scripts
Déboguer son application
Protéger le code
INTERACTION VBA / EXCEL
Comprendre l’API dans son ensemble
Cellule
Plage
Feuille
Classeur
Application
Boîtes de dialogue
Evénements
Gestion des erreurs
Affectation des macros à des boutons
Affectation des macros à des images
Affectation des macros aux menus
FORMULAIRES USERFORM
Composants d’un UserForm (bouton, liste…)
Tabulation entre les composants
Afficher un UserForm
Échanger des données avec le UserForm