Probablement esteu familiaritzat amb la funció MsgBox de VBA. La funció MsgBox, que accepta els arguments que es mostren a continuació, és útil per mostrar informació i obtenir una entrada senzilla de l'usuari. És capaç d'obtenir l'entrada de l'usuari perquè és una funció. Una funció, com probablement sabeu, retorna un valor. En el cas de la funció MsgBox, utilitza un quadre de diàleg per obtenir el valor que retorna. Segueix llegint per veure exactament com funciona.
Argumentació |
Què Afecta |
Avís |
El text Excel es mostra al quadre de missatge |
Botons |
Un número que especifica quins botons (juntament amb quina icona)
apareixen al quadre de missatge (opcional) |
Títol |
El text que apareix a la barra de títol del quadre de missatge
(opcional) |
Aquí teniu una versió simplificada de la sintaxi de la funció MsgBox:
MsgBox(sol·licitud[, botons][, títol])
Mostra un quadre de missatge senzill
Podeu utilitzar la funció MsgBox de dues maneres:
-
Simplement mostrar un missatge a l'usuari: En aquest cas, no us importa el resultat que retorna la funció.
-
Per obtenir una resposta de l'usuari: En aquest cas, us importa el resultat que retorna la funció. El resultat depèn del botó que faci clic l'usuari.
Si utilitzeu la funció MsgBox per si mateixa, no inclogueu parèntesis al voltant dels arguments. L'exemple següent només mostra un missatge i no retorna cap resultat. Quan es mostra el missatge, el codi s'atura fins que l'usuari faci clic a D'acord.
Sub MsgBoxDemo()
MsgBox "Feu clic a D'acord per començar a imprimir".
Fulls ("Resultats"). PrintOut
End Sub
Mireu a continuació per veure com es veu aquest quadre de missatge. En aquest cas, la impressió comença quan l'usuari fa clic a D'acord. Observeu que no hi ha manera de cancel·lar la impressió? Segueix llegint per saber com solucionar-ho.

Una caixa de missatges senzilla.
Obtenció d'una resposta d'un quadre de missatge
Si mostreu un quadre de missatge que no només té un botó D'acord, probablement voldreu saber quin botó fa clic l'usuari. Estàs de sort. La funció MsgBox pot retornar un valor que representa quin botó es fa clic. Podeu assignar el resultat de la funció MsgBox a una variable.
Al codi següent, s'utilitzen algunes constants integrades que faciliten el treball amb els valors retornats per MsgBox:
Sub GetAnswer()
Dim Ans As Long
Resposta = MsgBox ("Començar a imprimir?", vbYesNo)
Seleccioneu Cas Respostes
Cas vbSí
ActiveSheet.PrintOut
Cas vbNo
MsgBox "Impressió cancel·lada"
Finalitzar la selecció
End Sub
Constant |
Valor |
Què fa |
vbOKOnly |
0 |
Mostra només el botó D'acord. |
vbOKCancel |
1 |
Mostra els botons D'acord i Cancel·la. |
vbAbortRetryIgnore |
2 |
Mostra els botons Avortar, Reintentar i Ignorar. |
vbYesNoCancel |
3 |
Mostra els botons Sí, No i Cancel·la. |
vbSíNo |
4 |
Mostra els botons Sí i No. |
vbRetryCancel |
5 |
Mostra els botons Reintentar i Cancel·lar. |
vbCrític |
16 |
Mostra la icona de missatge crític. |
vbPregunta |
32 |
Mostra la icona de consulta d'advertència. |
vbExclamació |
48 |
Mostra la icona de missatge d'advertència. |
vbInformació |
64 |
Mostra la icona del missatge d'informació. |
vbDefaultButton1 |
0 |
El primer botó és per defecte. |
vbDefaultButton2 |
256 |
El segon botó és per defecte. |
vbDefaultButton3 |
512 |
El tercer botó és per defecte. |
vbDefaultButton4 |
768 |
El quart botó és per defecte. |
Mireu com es veu. Quan executeu aquest procediment, a la variable Ans se li assigna un valor de vbYes o vbNo, depenent del botó en què faci clic l'usuari. La instrucció Select Case utilitza el valor Ans per determinar quina acció ha de realitzar el codi.

Un quadre de missatge senzill, amb dos botons.
També podeu utilitzar el resultat de la funció MsgBox sense utilitzar una variable, com mostra l'exemple següent:
Sub GetAnswer2()
Si MsgBox(“Començar a imprimir?”, vbYesNo) = vbYes Aleshores
'...[codi si es fa clic a Sí]...
Altrament
'...[codi si no es fa clic a Sí]...
Acaba si
End Sub