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

pijaku Mensajes publicados 13513 Fecha de registro   Estado Moderador Última intervención   2 772
 
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
Yop73
 
Gracias
0
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
pijaku Mensajes publicados 13513 Fecha de registro   Estado Moderador Última intervención   2 772
 
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
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
pijaku Mensajes publicados 13513 Fecha de registro   Estado Moderador Última intervención   2 772
 
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
Code Jack Mensajes publicados 18 Estado Miembro 7
 
¡Ah, pues ya está, misterio resuelto ;) !

Código Jack
0