Saludos a todos.
Tengo dos dudas sobre Visual Basic:
1. Cuando pongo un MsgBox de pregunta con dos botones, sí ó no ("Texto", vbQuestion+vbYesNo, "Título"), cuando le doy al "sí" pasa a la siguiente acción, pero cuando le doy al "no" hace absolutamente lo mismo. Es decir, ¿cómo puedo hacer para que el MsgBox pueda distinguir entre si le doy al "sí" o si le doy al "no", y que según qué botón pulse haga una cosa u otra?
(http://img223.imageshack.us/img223/5676/captura1cw9.jpg)
2. Cuando le doy a la "X" o a Alt+F4 para cerrar el programa, ¿Cómo hago para que el programa antes de cerrarse directamente haga "algo" como lanzar un mensaje diciendo si quieres salir o no, o guardar algún dato con el que se trabajaba para no perderlo, etc.?
Gracias de antemano.
Hola, tus dudas son fáciles de solucionar.. verás..
El MsgBox con VbQuestion+vbyesNo lo que hace es devolver True si pulsas en sí y False si pulsas en No, es como una variable Booleana por lo tanto si quieres que haga una cosa u otra dependiendo que botón pulse sólo tienes que meter el msgbox en un if que compare la respuesta con vbyes o vbno.
Ejemplo:
Private Sub Command1_Click()
If MsgBox("Texto", vbQuestion + vbYesNo, "Título") = vbYes Then
MsgBox "has pulsado SI"
Else
MsgBox "Has pulsado NO"
End If
End Sub
Para que te pregunte al cerrar el programa tienes que colocar tu código en Form_Unload. La función Form_Unload lleva un parámetro Cancel con el que podrás decidir si cerrar o no el formulario, lo pones a 1 si quieres impedir que se cierre tu programa y a 0 en caso contrario, es más claro con un ejemplo.
Ejemplo:
Private Sub Form_Unload(Cancel As Integer)
If MsgBox("Desea Salir", vbQuestion + vbYesNo, "Título") = vbYes Then
Cancel = 0
Else
Cancel = 1
End If
End Sub
Espero que te sea de ayuda,
Saludos!!
Respuesta = MsgBox("Hola?", vbYesNo + vbExclamation, "titulo")
If Respuesta = vbYes Then
'pulsastes SI
elseif Respuesta = vbNo Then
' pulsastes no
end if
Cancel siempre va a ser igual a cero una vez entre en el "EVENTO Unload", solo cambiara si se lo indicamos, la comparación deberia hacerse con vbNo en lugar de vbYes. Mira este ejemplo:
Private Sub Form_Unload(Cancel As Integer)
Cancel = (MsgBox("¿Realmente desea Salir?", vbQuestion + vbYesNo, _
"Esta intentando salir del programa") = vbNo)
End Sub
¡S4lu2!
Pues muchas gracias a todos.
Lo del MsgBox, sospechaba que sería algo así, por lo que hice pruebas, pero claro, no funcionaban. Pero de lo otro no tení ni idea
Gracias.