La flexibilitat de l'argument dels botons de VBA facilita la personalització dels vostres quadres de missatges d'Excel. Podeu triar quins botons voleu mostrar, determinar si apareix una icona i decidir quin botó és el predeterminat (el botó predeterminat es fa "clic" si l'usuari prem Retorn).
Podeu utilitzar constants integrades per a l'argument botons. Si ho preferiu, podeu utilitzar el valor en lloc d'una constant (però utilitzar les constants integrades és molt més fàcil).
Per utilitzar més d'una d'aquestes constants com a argument, només cal connectar-les amb un operador +. Per exemple, per mostrar un quadre de missatge amb botons Sí i No i una icona d'exclamació, utilitzeu l'expressió següent com a segon argument MsgBox:
vbSíNo + vbExclamació
O, si preferiu que el vostre codi sigui menys entenedor, utilitzeu un valor de 52 (és a dir, 4 + 48).
L'exemple següent utilitza una combinació de constants per mostrar un quadre de missatge amb un botó Sí i un botó No (vbYesNo), així com una icona de signe d'interrogació (vbQuestion). La constant vbDefaultButton2 designa el segon botó (No) com a botó predeterminat, és a dir, el botó que es fa clic si l'usuari prem Enter. Per simplificar, aquestes constants s'assignen a la variable Config i després s'utilitzen Config com a segon argument de la funció MsgBox:
Sub GetAnswer3()
Dim Config As Long
Dim Ans com a nombre enter
Configuració = vbYesNo + vbQuestion + vbDefaultButton2
Resposta = MsgBox("Processar l'informe mensual?", Config)
Si Res = vbYes Aleshores RunReport
End Sub
Consulteu el quadre de missatge que mostra Excel quan executeu el procediment GetAnswer3. Si l'usuari fa clic al botó Sí, la rutina executa el procediment anomenat RunReport. Si l'usuari fa clic al botó No (o prem Enter), la rutina acaba sense cap acció. Com que l'argument del títol s'ha omès a la funció MsgBox, Excel utilitza el títol predeterminat, Microsoft Excel.
L'argument botons de la funció MsgBox determina el que apareix al quadre de missatge.
La rutina següent proporciona un altre exemple d'ús de la funció MsgBox:
Sub GetAnswer4()
Atenua el missatge com a cadena, el títol com a cadena
Dim Config com a enter, Ans com a enter
Msg = "Voleu processar l'informe mensual?"
Msg = Missatge i vbNewLine i vbNewLine
Msg = Msg & "El processament de l'informe mensual serà "
Msg = Msg & "Trega uns 15 minuts. És "
Msg = Msg & "generarà un informe de 30 pàgines per a "
Msg = Msg & "totes les oficines de vendes de l'actual"
Msg = Msg & "mes".
Títol = "XYZ Marketing Company"
Configuració = vbYesNo + vbQuestion
Res = MsgBox(Msg, Config, Title)
Si Res = vbYes Aleshores RunReport
End Sub
Aquest exemple mostra una manera eficient d'especificar un missatge més llarg en un quadre de missatge. Una variable (Msg) i l'operador de concatenació (&) s'utilitzen per construir el missatge en una sèrie de sentències. La constant vbNewLine insereix un caràcter de salt de línia que comença una línia nova (utilitza-la dues vegades per inserir una línia en blanc). L'argument del títol s'utilitza per mostrar un títol diferent al quadre de missatge. Aquí teniu el quadre de missatge que mostra Excel quan executeu aquest procediment.
Aquest quadre de diàleg, que mostra la funció MsgBox, mostra un títol, una icona i dos botons.
Podeu utilitzar constants (com ara vbYes i vbNo) per al valor de retorn d'una funció MsgBox. Aquí hi ha algunes altres constants.
Constant |
Valor |
Que significa |
vbOK |
1 |
L'usuari va fer clic a D'acord. |
vbCancel·la |
2 |
L'usuari ha fet clic a Cancel·la. |
vbAbort |
3 |
L'usuari ha fet clic a Avorta. |
vbReintentar |
4 |
L'usuari ha fet clic a Reprova. |
vbIgnora |
5 |
L'usuari ha fet clic a Ignora. |
vbSí |
6 |
L'usuari va fer clic a Sí. |
vbNo |
7 |
L'usuari ha fet clic a No. |
I això és pràcticament tot el que necessiteu saber sobre la funció MsgBox. Tanmateix, utilitzeu les caixes de missatges amb precaució. Normalment no hi ha cap motiu per mostrar quadres de missatges que no serveixen per a res. Per exemple, la gent acostuma a molestar-se quan veu un missatge cada dia que diu Bon dia. Gràcies per carregar el quadern de treball de projecció del pressupost.