Macro se ejecute solo una vez

hola muy buenas, tengo un duda que no se como solventar, en la celda Y1,Z1,AA1,Y2,Z2,AA2 alcanzaran un numero 5 respectivamente ejemplo: si en la celda Y2 alcanza el numero 5 antes que ningún otro rango o viceversa de los arriba mencionados, me disparara una macro, hasta ahy bien, el problema esta que mientras aparezca ese numero 5 la macro se seguirá ejecutando, pero como lo puse en el elemento Private Sub Worksheet_SelectionChange(ByVal Target As Range) al detectar que el 5 sigue ahy en el rango Y2 la sigue ejecutando y no quiero que haga eso si es posible,he creado un modulo para que se detenga pero nada..... Y la otra opción junto con esa, es que si en los demás rangos alcanzan el numero 5 ya que lo alcanzo el rango Y2 o viceversa no ejecute la misma macro. Muchas gracias...un saludo

1 respuesta

Respuesta
1

Con lo siguiente, se ejecuta la macro solamente si en alguna celda pones el 5

Private Sub
Worksheet_Change(ByVal Target As Range)
'Por.DAM
If Not Intersect(Target, Range("Y1,Z1,AA1,Y2,Z2,AA2")) Is Nothing Then
    If Target.Value = 5 Then
        macro
    End If
End If
End Sub

Saludos.Dante Amor
Si es lo que necesitas.

Dam muchísimas gracias por tu rápida respuesta, pero te comento, si da el caso que ha salido en el rango ("Y1")el numero 5, saltara mi macro pero es que seguido de que haya salido en ("Y1") el numero 5, a los pocos minutos o los pocos segundos se me va a dar el caso de que en otro rango alcanzara también el numero 5 y se volverá a disparar la macro y yo quiero que detecte que ya salto con cualquier rango, es decir que si se dispara por que uno de ellos ya alcanzo el numero 5, que ya no salte mi macro para el resto de celdas...un saludo.

y una aclaración mas para que no tengas problemas a la hora de visualizarlo, he comprobado que no salta si la celda no esta activa, en mi caso los valores de el numero 5 los coge de otra hoja con unas formulas, si ves que te seria mas fácil verlo dime una dirección de correo y te mando el archivo, saludos y gracias.

Tenes que poner un indicador en alguna parte de tu hoja. Primero agrega el siguiente código en thisworkbook. Cambia "hoja2" por el nombre d ela hoja en donde tienes las fórmulas. Cambia "BB1" por la celda que quieras para poner el indicador.

Private Sub Workbook_Open()
Sheets("hoja2").Range("BB1") = 0
End Sub

Ahora pon la siguiente macro en worksheet

Private Sub Worksheet_Calculate()
'Por.DAM
cel = Array("Y1", "Z1", "AA1", "Y2", "Z2", "AA2")
For i = LBound(cel) To UBound(cel)
If Range(cel(i)) = 5 Then
cont = cont + 1
End If
Next
If cont = 1 And Range("BB1") = 0 Then
macro
Range("BB1") = 1
End If
End Sub

Con esto solamente se ejecutar una vez cuando abras el libro.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas