Duda con Worksheet_SelectionChange. Detener una macro una vez seleccionada la opción de no ejec

Buen día Expertos de Excel, tengo una duda y quisiera comentarla para ver si me pueden apoyar, estoy iniciándome en esto de los Códigos en VB, mi duda es la siguiente:

En una hoja de excel hay una celda que cambia de valor, el objetivo es que al haber cualquier cambio verifique si se cumple una condición en la celda que antes hablé y muestre un mensaje si deseamos ejecutar cierta macro o no, todo va bien hasta ahí. El problema empieza cuando le digo que no deseo ejecutar la macro lógicamente porque al volver a la hoja se va a volver a cumplir la condición y va a volver a mostrar el mensaje interminablemente. La pregunta entonces es: Hay alguna forma de detener Worksheet_SelectionChange hasta que vuelva a cambiar de hoja?

Éste es mi código actualmente:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Range("A1").Value = "100(EJEMPLO)" Then
Dim respuesta As Integer
respuesta = MsgBox("DESEAS EJECUTAR MACRO?", vbQuestion + vbYesNo, "CONFIRMACIÓN")
If respuesta = 7 Then
MsgBox ("OK. NO HACEMOS NADA")
Exit Sub
Else
EJECUTAR MACRO

End if

End Sub

MI PREGUNTA ES COMO DETENER ESTE CÓDIGO UNA VEZ QUE LE HAYA DICHO QUE NO QUIERO EJECUTAR LA MACRO HASTA VOLVER A CAMBIAR DE HOJA.

ESPERO ME PUEDAN AYUDAR. DE ANTEMANO MUCHAS GRACIAS.

Y COMO DIJE AL PRINCIPIO APENAS ESTOY EMPEZANDO CON ESTO.

SALUDOS A TODOS Y BUEN DÍA.

1 Respuesta

Respuesta
1

Esta parte del código se ejecuta en CADA selección de cualquier celda de la hoja... recalco esto xq no sé si este evento sea el adecuado.

Con respecto a que no se ejecute, lo mejor es 'marcar' alguna variable definida de modo público en un módulo y consultar aquí o en la 'macro' por su valor.

Imaginemos que la consultamos aquí mismo:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

'consulto valor de variable

if marca = 1 then Exit sub
If Range("A1").Value = "100(EJEMPLO)" Then
Dim respuesta As Integer
respuesta = MsgBox("DESEAS EJECUTAR MACRO?", vbQuestion + vbYesNo, "CONFIRMACIÓN")
If respuesta = 7 Then
MsgBox ("OK. NO HACEMOS NADA")

'marco la variable

marca = 1
Exit Sub
Else
EJECUTAR MACRO
End if
End Sub

Además en un módulo agregá esta línea:

Public marca as byte

NOTA: falta volver la variable a 0... pero no se entiende esto: '... NO QUIERO EJECUTAR LA MACRO HASTA VOLVER A CAMBIAR DE HOJA...

¿Significa qué salir de la hoja?

Entonces en el evento Deactivate de la hoja colocá esta otra línea:

marca = 0


Probalo y si todo queda según lo solicitado no olvides finalizar la consulta.



Muchas gracias por su respuesta, la verdad creo que no era lo
que buscaba, no me explique bien.
La situación esta así:
Tengo dos hojas: hoja 1 y hoja
2
Lo que busco con worksheet_selectionchange es que este verificando una celda y
que en el momento en que la celda a1 de la hoja 1 por ejemplo haya cierto texto
o numero me muestre un mensaje para confirmar si deseo ejecutar cierta macro,
con las opciones "si" o "no", y una vez que le haya dado en
la opción "si"
ejecute la macro y cambie a la hoja 2, hasta ahí todo perfecto, el problema
viene cuando no quiero ejecutar la macro y quiero seguir modificando datos en
la hoja, se crea un círculo vicioso, al darle qué no, no ejecuta la macro pero
me vuelve a mostrar el mensaje y así empieza un circulo interminable, lo que
necesito es una forma para que una vez que haya seleccionado "no" se desactive worksheet_selectionchange hasta que manualmente cambie de hoja,
por ejemplo estoy en hoja 1, se cumple la condición en a1, muestra mensaje de confirmación para ejecutar macro, selecciono
"no", y quiero seguir editando datos en mi hoja 1 pero sin que me
siga saliendo el mensaje de confirmación. Ahora bien cambio
manualmente a la hoja 2 y necesito que cuando regrese a la hoja 1 vuelva a
activarse worksheet_selectionchange.
Espero me haya explicado bien.
De antemano muchas gracias.
De verdad es muy grande su
ayuda.
Que tengan un excelente dia
todos y especialmente los expertos que estoy a punto de volverme fanático de ustedes.
Atentamente.
Carlos Daniel Zárate Ramírez

¿Probaste lo que te envié... porque me parece x lo que leo, que eso es exactamente lo que te sugerí... Por favor probá lo que te comento en respuesta anterior y luego volveme a escribir para ver qué cambios necesitas.

Sdos

Elsa

MUCHAS GRACIAS EXPERTA, REALMENTE ME SACASTE DE UN APURO. MUY BUENA TU SOLUCIÓN, LA VERDAD NO ENTENDÍ MUY BIEN COMO FUNCIONA PERO DE QUE CUMPLIÓ EL OBJETIVO LO CUMPLIÓ A LA PERFECCIÓN. QUISIERA SER COMO USTED.

QUE TENGA UN EXCELENTE DÍA. SALUDOPS

MUCHAS GRACIAS EXPERTA, REALMENTE ME SACASTE DE UN APURO. MUY BUENA TU SOLUCIÓN, LA VERDAD NO ENTENDÍ MUY BIEN COMO FUNCIONA PERO DE QUE CUMPLIÓ EL OBJETIVO LO CUMPLIÓ A LA PERFECCIÓN. QUISIERA SER COMO USTED.

QUE TENGA UN EXCELENTE DÍA. SALUDOS

MUCHAS GRACIAS EXPERTA, REALMENTE ME SACASTE DE UN APURO. MUY BUENA TU SOLUCIÓN, LA VERDAD NO ENTENDÍ MUY BIEN COMO FUNCIONA PERO DE QUE CUMPLIÓ EL OBJETIVO LO CUMPLIÓ A LA PERFECCIÓN. QUISIERA SER COMO USTED.

QUE TENGA UN EXCELENTE DÍA. SALUDOS

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas