martes, julio 03, 2007

Como realizar una Ventana de Mensaje (MsgBox) en Visual Basic

Función MsgBox

El “MsgBox” es una función incorporada en el VB que tiene muchas posibilidades, veámoslo:

- Recupera la base de datos PROGRAMAS.mdb

- Selecciona el Objeto: Módulos y click en [Nuevo]

- Escribe el siguiente procedimiento:

Sub Programa28()
Dim nom As String
Dim Respuesta As Integer
nom = "Pepito"
MsgBox ("Hola " & nom)
MsgBox "Hola " & nom
MsgBox "Mira el título", , "Pongo el título que quiero"
MsgBox "Observa este" & vbCrLf & "texto que ocupa " & _
vbCrLf & "tres líneas", , "Título"
MsgBox "Mira el icono de " & vbCrLf & "pregunta", _
vbQuestion, "Icono Interrogación"
MsgBox "Otro icono", vbCritical, "Icono Crítico"
MsgBox "otro", vbExclamation, "Icono Exclamación"
MsgBox "otro más", vbInformation, "Icono Información"
Respuesta = MsgBox("Observa que al incluir más" & _
vbCrLf & "de un botón, en el MsgBox" & _
vbCrLf & "pongo paréntesis y utilizo" & vbCrLf _
& "una variable, que recogerá" & _
vbCrLf & "el botón que hemos pulsado", vbYesNo + _
vbQuestion, "Dos botones")
Debug.Print Respuesta
Respuesta = MsgBox("tres botones", vbYesNoCancel + _
vbInformation, "Con icono Información")
Debug.Print Respuesta
Respuesta = MsgBox("tres botones pero" & vbCrLf & _
"el activo es el segundo", vbAbortRetryIgnore _
+ vbCritical + vbDefaultButton2, "Icono Critico")
Debug.Print Respuesta
End Sub

- Click en el icono “Guardar”
Graba el nuevo módulo con el nombre Módulo2

- Pulsa las teclas [CTRL][G] para abrir la ventana “Inmediato”

- Escribe Programa28 y pulsa [Return]

Observa detenidamente lo que sucede y ejecútalo varias veces para verlo mejor.

Explicación del Programa28:

• El primer “MsgBox”:
MsgBox(“Hola” & nom)
es el tipo de cuadro que ya habíamos utilizado

• Si observamos el segundo:
MsgBox “Hola” & nom
llegamos a la conclusión que tanto da poner o no poner paréntesis.


• Recuerda que en Visual Basic podemos escribir líneas de programa distribuyéndolas en varias líneas, sin más que escribir el símbolo de subrayado (tecla del “menos”) precedido de un espacio en blanco.

• vbCrLf es una constante simbólica de VB que “obliga a un retorno de carro o nueva línea”, con su uso conseguimos distribuir el texto en varias líneas.

• El primer argumento del MsgBox es el texto que aparece en el cuadro. El tercer argumento es el texto que aparece como título del cuadro (igual que sucedía con el InputBox)

• En el segundo argumento del “msgbox” podemos incluir un icono determinado y/o varios botones y/o activar por defecto un botón determinado. Todo esto se consigue utilizando constantes simbólicas de VB o su valor numérico equivalente como aparece en las siguientes tablas:

Constantes para los iconos Valor Numérico Significado
vbCritical 16 Icono crítico
vbQuestion 32 Icono pregunta
vbExclamation 48 Icono exclamación
vbInformation 64 Icono información

Constantes para los botones Valor Numérico Significado
vbOKOnly (defecto) 0 [Aceptar]
vbOKCancel 1 [Aceptar][Cancelar]
vbAbortRetryIgnore 2 [Anular][Reintentar][Ignorar]
vbYesNoCancel 3 [Sí][No][Cancelar]
vbYesNo 4 [Sí][No]

Constantes para activar botón Valor Numérico Significado
vbDefaultButton1 (defecto) 0 Activa el primer botón
vbDefaultButton2 256 Activa el segundo botón
vbDefaultButton3 512 Activa el tercer botón


• El hecho de incluir botones no tiene sentido si no recogemos el botón pulsado en una variable (de aquí el uso de la variable respuesta en nuestro procedimiento). En este caso hemos de escribir el MsgBox con paréntesis necesariamente.
Los números o constante simbólica que devuelven los diferentes botones son los siguientes:

Botón Devuelve el número Constante
Aceptar 1 vbOK
Cancelar 2 vbCancel
Anular 3 vbAbort
Reintentar 4 vbRetry
Ignorar 5 vbIgnore
Sí 6 vbYes
No 7 vbNo