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 algunas tareas 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 una opción Sí o No frente al usuario para dar su respuesta, y basándonos en esa respuesta. De hecho, podemos ejecutar el código VBA.
Por ejemplo, mire la siguiente imagen de 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?
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 de un 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, entonces 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 Luego 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 nos encontramos ahora mismo, 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".

Del mismo modo, 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 Next 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á.