VBA MsgBox (Sí / No)

Excel VBA MsgBox (Sí / No)

En VBA , usando el cuadro de mensaje podemos crear un cuadro de mensaje sí no que se usa para registrar la entrada del usuario en función del clic en sí o no, la sintaxis para hacer un cuadro de mensaje sí no es la siguiente variable = MsgBox ("Texto", vbQuestion + vbYesNo + vbDefaultButton2, “Título del cuadro de mensaje”) donde la variable debe declararse como un número entero.

A menudo, en la codificación VBA, necesitamos recopilar los valores de entrada de los usuarios para realizar alguna tarea y una de esas tareas para recopilar la respuesta Sí o No de los usuarios. Al usar el método VBA MsgBox Yes No, podemos escribir el código para continuar en el código.

En ciertas situaciones, es posible que debamos presentar la opción Sí o No frente al usuario para dar su respuesta y, en función de esa respuesta, podemos ejecutar el código VBA.

Por ejemplo, mire la imagen de abajo del MsgBox en VBA.

Si el usuario dice Sí, "podemos escribir código para realizar una tarea específica" y si el usuario dice "No", podemos escribir código para realizar otro conjunto de tareas.

¿Cómo trabajar con MsgBox Yes / No Response?

Puede descargar este cuadro de mensaje de VBA Sí o No Plantilla de Excel aquí - Cuadro de mensaje de VBA Sí o No Plantilla de Excel

Ejemplo n. ° 1: copiar y pegar según la respuesta

Por ejemplo, mire el siguiente código.

Código:

 Sub MessageBox_Yes_NO_Example1 () Dim AnswerYes As String Dim AnswerNo Como String AnswerYes = MsgBox ("¿Desea copiar?", VbQuestion + vbYesNo, "User Repsonse") If AnswerYes = vbYes Then Range ("A1: A2"). Copiar rango ("C1") Else Range ("A1: A2"). Copiar rango ("E1") End If End Sub 

Explicación:

Lo anterior ha declarado la variable como String, es decir

 Respuesta tenue Sí como cadena 

En la siguiente línea, hemos asignado el valor a través del cuadro de mensaje que pregunta "¿Desea copiar?".

AnswerYes = MsgBox ("¿Desea copiar?", VbQuestion + vbYesNo, "Respuesta del usuario")

Ahora la instrucción IF evalúa la respuesta dada a través del cuadro de mensaje. Si el resultado del cuadro de mensaje es vbYes , copiará el rango A1 a A2 y lo pegará en la celda C1.

   Si AnswerYes = vbYes Then Range ("A1: A2"). Copiar rango ("C1")

Si la respuesta dada por el cuadro de mensaje es No, copiará el rango A1 a A2 y lo pegará en la celda E1.

 Else Range ("A1: A2"). Copy Range ("E1") End If 

Ok, he ingresado algunos valores en la celda A1 y A2 ahora.

Ahora ejecutaré el código usando la tecla F5 o mediante la opción de ejecución, aparecerá un cuadro de mensaje frente a mí y me pedirá mi respuesta.

Si hago clic en Sí, copiará el rango A1 a A2 y lo pegará en la celda C1. Ahora haré clic en Sí y veré el resultado.

Por lo que ha realizado la tarea asignada si la respuesta es SI.

Ahora de nuevo ejecutaré el código.

Esta vez seleccionaré No y veré qué sucede.

Sí, realizó la tarea asignada en el código, es decir

 Else Range ("A1: A2"). Rango de copia ("E1")

Ejemplo n. ° 2: ocultar y mostrar hojas según la respuesta

El siguiente código ocultará todas las hojas excepto la hoja activa si la respuesta es sí.

Código:

 Sub HideAll () Dim Respuesta como cadena Dim Ws As Worksheet Answer = MsgBox ("¿Desea ocultar todo?", VbQuestion + vbYesNo, "Hide") Si Answer = vbYes Entonces para cada Ws en ActiveWorkbook.Worksheets If Ws.Name ActiveSheet.Name Entonces Ws.Visible = xlSheetVeryHidden Siguiente Ws ElseIf Answer = vbNo Then MsgBox "Ha seleccionado no ocultar las hojas", vbInformation, "No Hide" End If End Sub 

El código anterior ocultará todas las hojas de trabajo excepto la hoja en la que estamos ahora si la respuesta del cuadro de mensaje es SÍ.

Si la respuesta del cuadro de mensaje es NO, se mostrará el cuadro de mensaje que dice "Ha seleccionado no ocultar las hojas".

De manera similar, el siguiente código mostrará la hoja si la respuesta es Sí.

Código:

 Sub UnHideAll () Dim Respuesta como cadena Dim Ws como hoja de trabajo Respuesta = MsgBox ("¿Desea mostrar todo?", VbQuestion + vbYesNo, "Ocultar") Si Answer = vbYes Entonces para cada W en ActiveWorkbook.Worksheets Ws.Visible = xlSheetVeryHidden Siguiente Ws ElseIf Answer = vbNo Then MsgBox "Ha seleccionado no mostrar las hojas", vbInformation, "No ocultar" End If End Sub 

Esto funciona exactamente igual que el código de la hoja oculta, si es así, se mostrará, si no, no se mostrará.