2013-04-25

Mensaje emergente al abrir un fichero Ms Excel

La función MsgBox en VBA muestra un cuadro de diálogo al usuario y, si lo necesitamos, captura su respuesta (por ejemplo: Sí, No o Cancelar). Uno de los múltiples usos es desplegar este mensaje de texto al abrir un fichero de Excel.

Para ello necesitamos abrir el editor de Visual Basic Alt+F11 e insertar el código en ThisWorkBook. En el menú desplegable Objeto, selecciona Workbook. Por defecto Excel crea:
Private Sub Workbook_Open() ....[Inserta el código aquí] ... End Sub




La sintaxis en español es MsgBox(texto[, botones] [, título] [, archivoayuda, contexto])

Ejemplo 1-Mensaje simple

Private Sub Workbook_Open()
  MsgBox "1-El libro está en cálculo manual" & vbCrLf & _
  "2-Haz clic en F9 para recalcular fórmulas" & vbCrLf & _
  "", vbInformation, "INFORMACION"
End Sub
Escribimos el texto del mensaje, Chr(13) o vbCrLf, para insertar saltos de línea. VbInformation muestra el icono de mensaje de información y en el argumento título "INFORMACION".


 Ejemplo 2-Captura respuesta del usuario

Private Sub Workbook_Open()
    Dim Respuesta As VbMsgBoxResult
    Respuesta = MsgBox("¿Conoces la sintaxis de MsgBox?", _
    vbQuestion + vbYesNo, "Nube de datos")
    If respuesta = vbYes Then 'Haz X
        MsgBox "Perfecto. ¿Usas la función frecuentemente?", vbInformation
        Else                  'Haz Y
        MsgBox "Quizá deberías ir al enlace propuesto" & Chr(13) & _
        "o leer la ayuda de Excel", vbExclamation
    End If
End Sub
Capturamos la respuesta del usuario con la variable Respuesta. Con vbQuestion + vbYesNo mostramos el icono de pregunta de advertencia y los botones Sí y No, en el argumento título "Nube de datos". La respuesta la manejamos con un If. vbInformation para el icono del sí y vbExclamation para el del no
.

Otra alternativa a If, quizá más clara y eficiente, es usar Select Case

Private Sub Workbook_Open()
    Dim Respuesta As VbMsgBoxResult
    Respuesta = MsgBox("¿Conoces la sintaxis de MsgBox?", _
    vbQuestion + vbYesNoCancel, "Nube de datos")
    Select Case Respuesta
     Case vbYes 'Haz X
         MsgBox "Perfecto. ¿Usas la función frecuentemente?", vbInformation
     Case vbNo  'Haz Y
         MsgBox "Quizá deberías ir al enlace propuesto" & Chr(13) & _
        "o leer la ayuda de Excel", vbExclamation
     Case vbCancel
         Exit Sub 'Haz Z
    End Select
End Sub

Cambiamos el argumento [botones] para mostrar , No y Cancelar.

Información detallada de la función MsgBox en: Ayuda de Excel/Referencia del lenguaje de Visual Basic/Funciones/M-P/MsgBox (Función)

No hay comentarios:

Publicar un comentario

Nube de datos