Los cuadros de diálogo (Dialog Boxes) en Excel VBA se utilizan para mostrar información al usuario.
La función MsgBox muestra un mensaje en un cuadro de diálogo, espera a que el usuario haga clic en un botón y devuelve un número entero que indica en qué botón hizo clic el usuario.
El cuadro de diálogo más común utilizado es el cuadro de mensaje, pero también podemos usar el cuadro de entrada.
Hasta ahora, hemos utilizado el cuadro de diálogo MsgBox para mostrar información en la pantalla.
Sub delete_B2() Range("B2").ClearContents MsgBox "¡El contenido de la celda B2 ha sido eliminado!" End Sub
En este caso, se llama a MsgBox con un solo argumento. Ver código a continuación:
Ahora crearemos un cuadro de diálogo que pedirá confirmación para eliminar antes de que se ejecuten las dos instrucciones. Entonces hay tres argumentos que usaremos:
MsgBox([TEXTO], [BOTONES], [TÍTULO])
Sub delete_B2() If MsgBox("Are you sure that you wish to delete the contents of B2 ?", vbYesNo, "Confirm") = vbYes Then Range("B2").ClearContents MsgBox "The contents of B2 have been deleted !" End If End Sub
Resultado:
Private Sub warning(var_text As String) MsgBox "Caution : " & var_text & " !" End Sub Sub macro_test() If Range("A1") = "" Then warning "celda vacia" ElseIf Not IsNumeric(Range("A1")) Then warning "valor no numérico" End If End Sub
vbYesNo especifica que los botones de diálogo son "Yes" y "No", y vbYes representa el botón "Yes":
If MsgBox("Text", vbYesNo, "Title") = vbYes Then 'Si se presiona el botón Yesbl_...
Constante | Numérico Value | Descripción |
---|---|---|
vbOKOnly | 0 | |
vbOKCancel | 1 | |
vbAbortRetryIgnore | 2 | |
vbYesNoCancel | 3 | |
vbYesNo | 4 | |
vbRetryCancel | 5 |
vbCritical | 16 | |
vbQuestion | 32 | |
vbExclamation | 48 | |
vbInformation | 64 |
Aquí hay un ejemplo MsgBox que continuará mostrándose cada vez en el bucle hasta que el usuario presione Yes:
Sub humor() Do If MsgBox("Do you like the Moonexcel site ?", vbYesNo, "Survey") = vbYes Then Exit Do '=> Respuesta Yes = Sí, salimos del bucle End If Loop While 1 = 1 '=> Bucle sin fin MsgBox ";-)" End Sub
Para mostrar una nueva cinta, puede usar la función Chr con un argumento de 10, que se encarga de mover la cinta, por ejemplo:
MsgBox "Example 1" & Chr(10) & "Example 2" & Chr(10) & Chr(10) & "Example 3"
Obtenemos el siguiente resultado:
Un InputBox solicita al usuario que ingrese un valor en un cuadro de diálogo, por ejemplo:
Sub example() Dim result As String result = InputBox("Text ?", "Title") 'A la variable se le asigna el valor ingresado en el InputBox If result <> "" Then 'Si el valor es cualquier cosa menos "", entonces se mostrará el resultado MsgBox result End If End Sub
Obtenemos el siguiente resultado:
El tercer argumento se puede utilizar para establecer el valor predeterminado:
InputBox("Text ?", "Title", "Default value")
El resultado es el siguiente: