VBA recuperar valor devuelto por MsgBox

Resuelto
Code Jack Mensajes publicados 18 Estado Miembro -  
 Yop73 -
Hola a todos,

No puedo recuperar el valor devuelto por una MsgBox en una variable myChoice. Necesito saber si el usuario desea salir del procedimiento paso a paso...

¿Podrían ayudarme?

Gracias de antemano,

Código Jack

Configuración: Windows 7 / Firefox 5.0

2 respuestas

  1. pijaku Mensajes publicados 13513 Fecha de registro   Estado Moderador Última intervención   2 773
     
    Hola,
    Todo depende de su MsgBox...
    Ejemplo con un cuadro de mensaje "sí - no":
    Sub test() Dim result As String, MyChoice As String result = MsgBox("¡Haga su elección!", vbYesNo) If result = vbYes Then MyChoice = "Opción 1 : Sí" Else MyChoice = "Opción 2 : No" End If MsgBox MyChoice End Sub

    --
    Atentamente,
    Franck P
    10
    1. Yop73
       
      Gracias
      0
  2. Code Jack Mensajes publicados 18 Estado Miembro 7
     
    Esa es exactamente el tipo de solicitud que tengo que hacer, gracias.

    Pero la ayuda precisa sobre MsgBox:

    "Valores devueltos:

    Constante, Valor, Descripción
    vbOK, 1, OK
    vbCancel, 2, Cancelar
    vbAbort, 3, Abandonar
    vbRetry, 4, Reintentar
    vbIgnore, 5, Ignorar
    vbYes, 6, Sí
    vbNo, 7, No"

    Así que pensé que había que recuperar en myChoice un entero...

    Pero si no, no pasa nada, puedo trabajar con su propuesta.

    Muchas gracias,

    Código Jack
    0
    1. pijaku Mensajes publicados 13513 Fecha de registro   Estado Moderador Última intervención   2 773
       
      Puedes, puedes...
      Era solo una propuesta.
      Tomen, hagan esta prueba:
      Dim result As Integer result = MsgBox("haga clic", vbYesNoCancel) MsgBox result

      devuelve 6 cuando se hace clic en "sí", 7 cuando se hace clic en "no" y 2 cuando se hace clic en "cancelar"
      ¡Ustedes deciden!
      -1
    2. Code Jack Mensajes publicados 18 Estado Miembro 7
       
      ¡Es interesante, dicho esto!

      Almacenan dos cosas diferentes según la introducción de su variable en sus dos ejemplos.
      MsgBox parece devolver tanto la cadena como el entero, dependiendo de dónde lo almacenemos... Extraño

      ¡Muchas gracias de todos modos!

      Código Jack
      0
    3. pijaku Mensajes publicados 13513 Fecha de registro   Estado Moderador Última intervención   2 773
       
      Lo que mencionas es aún más interesante para mí porque nunca me lo había preguntado y acabo de darme cuenta de que... ¡estaba completamente equivocado!
      MsgBox devuelve un Integer de manera sistemática... vbYes, por ejemplo, es una constante de VBA igual a 6.
      El error que he cometido desde el principio es gestionado automáticamente por VBA...
      Dim result As String mientras que, de hecho, result = 6 se trata de forma automática (lo leí en alguna parte, pero ¿dónde...???).
      Fuentes: MsgBox
      0
    4. Code Jack Mensajes publicados 18 Estado Miembro 7
       
      ¡Ah, pues ya está, misterio resuelto ;) !

      Código Jack
      0