Вероятно сте запознати с функцията VBA MsgBox. Функцията MsgBox, която приема аргументите, показани по-долу, е удобна за показване на информация и получаване на лесна информация от потребителя. Той е в състояние да получи въвеждане от потребителя, защото е функция. Функцията, както вероятно знаете, връща стойност. В случай на функцията MsgBox, тя използва диалогов прозорец, за да получи стойността, която връща. Продължете да четете, за да видите как точно работи.
Аргумент |
Какво засяга |
Подкана |
Текстът на Excel се показва в полето за съобщения |
Бутони |
Число, което определя кои бутони (заедно с каква икона) се
появяват в полето за съобщения (по избор) |
Заглавие |
Текстът, който се показва в заглавната лента на полето за съобщения
(по избор) |
Ето опростена версия на синтаксиса на функцията MsgBox:
MsgBox(подкана[, бутони][, заглавие])
Показване на просто поле за съобщения
Можете да използвате функцията MsgBox по два начина:
-
За просто да покажете съобщение на потребителя: В този случай не се интересувате от резултата, върнат от функцията.
-
За да получите отговор от потребителя: В този случай ви е грижа за резултата, върнат от функцията. Резултатът зависи от бутона, който потребителят щракне.
Ако използвате функцията MsgBox самостоятелно, не включвайте скоби около аргументите. Следният пример просто показва съобщение и не връща резултат. Когато се покаже съобщението, кодът спира, докато потребителят щракне OK.
Sub MsgBoxDemo()
MsgBox „Щракнете върху OK, за да започнете да печатате.“
Листове („Резултати“). Разпечатайте
Край под
Погледнете по-долу, за да видите как изглежда това поле за съобщения. В този случай отпечатването започва, когато потребителят щракне OK. Забелязвате ли, че няма начин да отмените отпечатването? Продължете да четете, за да разберете как да поправите това.
Проста кутия за съобщения.
Получаване на отговор от кутия за съобщения
Ако покажете поле за съобщение, което има повече от бутон OK, вероятно ще искате да знаете кой бутон щраква потребителят. Имаш късмет. Функцията MsgBox може да върне стойност, която представлява кой бутон е щракнат. Можете да присвоите резултата от функцията MsgBox на променлива.
В следния код се използват някои вградени константи, които улесняват работата със стойностите, върнати от MsgBox:
Под GetAnswer()
Dim Ans As Long
Ans = MsgBox(„Започнете да печатате?“, vbYesNo)
Изберете Case Ans
Случай vbДа
ActiveSheet.PrintOut
Дело vbNo
MsgBox „Печатът е отменен“
Край Изберете
Край под
Постоянна |
Стойност |
Какво прави |
vbOKOnly |
0 |
Показва само бутона OK. |
vbOKОтказ |
1 |
Показва бутоните OK и Cancel. |
vbAbortRetryIgnore |
2 |
Показва бутони Прекратяване, Повторен опит и Игнориране. |
vbYesNoCancel |
3 |
Показва бутоните Да, Не и Отказ. |
vbYesNo |
4 |
Показва бутоните Да и Не. |
vbRetryCancel |
5 |
Показва бутони Повторен опит и Отказ. |
vbCritical |
16 |
Показва икона на критично съобщение. |
vbQuestion |
32 |
Показва икона на предупредителна заявка. |
vbExclamation |
48 |
Показва икона на предупредително съобщение. |
vbинформация |
64 |
Показва икона на информационно съобщение. |
vbDefaultButton1 |
0 |
Първият бутон е по подразбиране. |
vbDefaultButton2 |
256 |
Вторият бутон е по подразбиране. |
vbDefaultButton3 |
512 |
Третият бутон е по подразбиране. |
vbDefaultButton4 |
768 |
Четвъртият бутон е по подразбиране. |
Вижте как изглежда. Когато изпълните тази процедура, на променливата Ans се присвоява стойност или vbYes, или vbNo, в зависимост от това кой бутон щракне потребителят. Инструкцията Select Case използва стойността Ans, за да определи кое действие трябва да извърши кодът.
Проста кутия за съобщения с два бутона.
Можете също да използвате резултата от функцията MsgBox, без да използвате променлива, както показва следният пример:
Под GetAnswer2()
Ако MsgBox(“Започнете да печатате?”, vbYesNo) = vbYes Тогава
' ...[код, ако се щракне върху Да]...
иначе
' ...[код, ако не се щракне върху Да]...
Край, ако
Край под