VBA MsgBox Sí / No | Com es pot crear una resposta Sí / No?

Excel VBA MsgBox (Sí / No)

En VBA, mitjançant el quadre de missatges podem crear un fitxer Sí no msgbox que s’utilitza per enregistrar l’entrada de l’usuari basant-se en fer clic a sí o no, la sintaxi per fer un quadre de missatge sí no és la següent variable = MsgBox (“Text”, vbQuestion + vbSíNo + vbDefaultButton2, “Títol del quadre de missatge”) on variable s'ha de declarar com a enter.

Sovint a la codificació VBA, hem de recollir els valors d’entrada dels usuaris per realitzar alguna tasca i una d’aquestes tasques per recollir la resposta Sí o No dels usuaris. Mitjançant l’ús del mètode VBA MsgBox Yes No, podem escriure el codi per continuar endavant al codi.

En determinades situacions és possible que haguem de presentar l'opció Sí o No davant de l'usuari per donar la seva resposta i, en funció d'aquesta resposta, podem executar el codi VBA.

Per exemple, mireu la imatge següent de MsgBox a VBA.

Si l'usuari diu Sí, "podem escriure codi per realitzar tasques específiques" i si l'usuari diu "No", podem escriure codi per realitzar un altre conjunt de tasques.

Com treballar amb MsgBox Resposta Sí / No?

Podeu descarregar aquesta plantilla Excel de quadre de missatges VBA Sí o No aquí: quadre de missatges VBA Sí o no Plantilla Excel

Exemple 1: copieu i enganxeu segons la resposta

Per exemple, mireu el codi següent.

Codi:

 Sub MessageBox_Yes_NO_Example1 () Atenueu la resposta Sí com a cadena Atenueu la resposta No com a resposta de cadena Sí = MsgBox ("Voleu copiar?", VbQuestion + vbYesNo, "Resposta d'usuari") Si AnswerYes = vbYes llavors Range ("A1: A2"). ("C1") Interval d'altres ("A1: A2"). Interval de còpia ("E1") Finalitza si finalitza Sub 

Explicació:

L'anterior ha declarat la variable com a String i.e.

 Resposta feble Sí com a cadena 

A la següent línia, hem assignat el valor a través del quadre de missatge que demana "Voleu copiar?".

AnswerYes = MsgBox ("Voleu copiar?", VbQuestion + vbYesNo, "User Repsonse")

Ara, la sentència IF avalua la resposta donada a través del quadre de missatge. Si el resultat del quadre de missatge és vbSí llavors copiarà l'interval A1 a A2 i s'enganxarà a la cel·la C1.

  Si Respon Sí = vb Sí, llavors Interval ("A1: A2"). Copia l'interval ("C1")

Si la resposta que dóna el quadre de missatge és No, copiarà l'interval A1 a A2 i s'enganxarà a la cel·la E1.

 Rang d'altres ("A1: A2"). Copieu l'interval ("E1") Finalitza si 

D'acord, ara he introduït pocs valors a les cel·les A1 i A2.

Ara executaré el codi amb la tecla F5 o mitjançant l'opció d'execució, apareixerà un quadre de missatge davant meu i demanarà la meva resposta.

Si faig clic a Sí, copiarà l'interval A1 a A2 i s'enganxarà a la cel·la C1. Ara faré clic a Sí i veuré el resultat.

Per tant, ha realitzat la tasca assignada si la resposta és SÍ.

Ara de nou executaré el codi.

Aquesta vegada seleccionaré No i veuré què passa.

Sí, va realitzar la tasca assignada al codi, és a dir,

 Alt valor ("A1: A2"). Copieu l'interval ("E1")

Exemple núm. 2: ocultar i mostrar ocultes fulls basats en la resposta

A sota del codi s’amagaran tots els fulls, excepte el full actiu, si la resposta és afirmativa.

Codi:

 Sub HideAll () Atenuar la resposta com a cadena Atenuar Ws com a resposta del full de treball = MsgBox ("Voleu ocultar-ho tot?", VbQuestion + vbSíNo, "Ocultar") Si Resposta = vbSí, per a cada Ws d'ActiveWorkbook.Whesheets If Ws.Name ActiveSheet.Name Then Ws.Visible = xlSheetVeryHidden Next Ws ElseIf Answer = vbNo Then MsgBox "Heu seleccionat no ocultar els fulls", vbInformation, "No oculta" Finalitza si finalitza Sub 

El codi anterior amagarà tots els fulls de treball, excepte el full en què estem ara, si la resposta del quadre de missatge és SÍ.

Si la resposta del quadre de missatge és NO, es mostrarà el quadre de missatges dient "Heu seleccionat no amagar els fulls".

De la mateixa manera, el codi següent mostrarà el full si la resposta és Sí.

Codi:

 Sub Un hideAll () Atenueu la resposta com a cadena Atenueu com a resposta de full de càlcul = MsgBox ("Voleu mostrar tots?", VbQuestion + vbSíNo, "Amaga") Si Resposta = vbSí, per cada Ws d'ActiveWorkbook.Worksheets Ws.Visible = xlSheetVeryHidden Next Ws ElseIf Answer = vbNo Aleshores MsgBox "Heu seleccionat no mostrar els fulls", vbInformació, "No oculta" Finalitza si finalitza Sub 

Funciona exactament igual que el codi del full d’amagatall, si sí, es mostrarà, si no, no es mostrarà.