Macro con MsgBox de botones Yes/No.

Tengo una celda (A1) con una lista de validación y otra celda (A2) con los posibles valores 0 y 1. Quisiera hacer una macro para que, cuando ya exista un dato seleccionado de la lista en A1, es decir que la celda A1 no esté vacía, y se seleccione otro dato distinto de dicha lista, si el valor de la celda A2 es 1, aparezca un MsgBox con los botones YES y NO. Si se pulsa en YES quiero que se escriba 1 en otra celda (A3) y si se pulsa NO quiero que la celda A1 mantenga el dato seleccionado en primer lugar.

1 respuesta

Respuesta
1
Pon el código que estás utilizando o adapta esto:
Dim Mensaje, Estilo, Título, Ayuda, Ctxt, Respuesta, MiCadena
Mensaje = "¿Desea continuar?"    ' Define el mensaje.
Estilo = vbYesNo + vbCritical + vbDefaultButton2    ' Define los botones.
Título = "Demostración de MsgBox"    ' Define el título.
Ayuda = "DEMO.HLP"    ' Define el archivo de ayuda.
Ctxt = 1000    ' Define el tema
                ' el contexto
                ' Muestra el mensaje.
Respuesta = MsgBox(Mensaje, Estilo, Título, Ayuda, Ctxt)
If Respuesta = vbYes Then
    Range("A3").Value = 1
Else
    Range("A1").Select
    Exit Sub
End If
Muchas gracias por tu pronta contestación.
He adaptado el código para que se ejecute la macro al realizar una selección de la lista de validación de la lista de la celda (A1) y el valor de la celda (A2) sea "1":
  Private Sub Worksheet_Change(ByVal Target As Excel.Range)
  If Target.Address = "$A$1" And Range("$A$2").Value = 1 Then ...
Pero sigo teniendo el problema de que al pinchar el botón "NO" del MsgBox: necesito que la celda (A1) recupere el dato que tenía antes de realizar la nueva selección que dio origen a la ejecución de la macro, de modo que no se presente cambio alguno en la hoja excel, en cambio, al haber seleccionado un nuevo dato de la lista de la celda (A1), teniendo el valor "1" en la celda (A2), lo que ejecuta la macro, dicho dato de la lista de la celda (A1) se mantiene, independientemente de que se pulse el botón "YES" o "NO" en la MsgBox.
Por cierto, ¿cómo sería posible cambiar el texto "YES" por el texto "SI" en los botones de la MsgBox?
Muchas gracias de antemano.
Entonces guarda ese valor en una variable y si necesitas la llamas y listo.
¿Me podrías indicar cómo hacerlo? Soy novel con las macros...
Dim MiVariable As Integer

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas