Ejecutar una macro sólo si la celda activa está dentro de un rango específico

Tengo el inconveniente que necesito ejecutar una Macro (que aplica a una celda específica) SIEMPRE y CUANTO, la celda activa se encuentre dentro de:

a) En una celda de una columna o columnas específicas

(Por ejemplo: Ejecutar la Macro siempre y cuando la celda activa se encuentre en dentro de la columna B o columna B:C)

b) La celda activa de encuentre dentro de un rango específico

(Por ejemplo: Que la celda activa se encuentre dentro del rango A10:C30)

c) La celda activa se encuentre dentro de varios rangos diferentes:

(Por ejemplo: Que la celda activa se encuentre dentro del rango Hoja1! A10:C30 o Hoja2! A50:C70 o Hoja3! A100:C120)

1 Respuesta

Respuesta
1

 a) If Not Intersect(Target, Range("B:C")) Is Nothing Then 

b)  If Not Intersect(Target, Range("A10:C30")) Is Nothing Then 

c) If (Not Intersect(Target, Range("A10:C30")) Is Nothing OR  Not Intersect(Target, Range("A50:C70")) Is Nothing OR  Not Intersect(Target, Range("A100:C120")) Is Nothing)Then 

Prueba estos

Muchas Gracias... lo mejor es que tengo que entregar este trabajo cuando antes, así que le dará una mirada y cualquier cosa repregunto.

Muchas Gracias de nuevo!

Saludos

A ver mi macro quedó así:

' Reprogramación Macro activado mediante CTRL + SHIFT + R

'La Parte de Gregory

If Not Intersect(Target, Range("C8:N400")) Is Nothing Then
End If

'Mi parte que si funcionaba
If ActiveCell.FormulaR1C1 = "" Then
MsgBox ("La celda seleccionada no contiene programación")
Else
ActiveCell.FormulaR1C1 = "0"
Load Formulario_Reprogramación
Formulario_Reprogramación.Show
End If

No funciona la macro que me enviaste. Por favor necesito la macro para que NO FUNCIONE si la celda activa no está en el RANGO c8:n400

¿Has puesto en código en la hoja adecuada y con el evento Worksheet_SelectionChange?

No, la Macro que hice está en MÓDULOS. 

¿Hay problema que COPIE el contenido de mi macro + tu macro + el Evento Worksheet_SelectionChangue en CADA UNA DE LAS HOJAS donde deseo que se ejecute?

Eso quiere decir que si está en MÓDULOS aplica a TODO el Libro EXCEL? (Si estoy en nivel IQ 110 aún)

Para que una macro se ejecute por un evento que pasa en una hoja, hay que pegarlo en la hoja correspondiente

Si quieres que se ejecute ante un evento para todo el libro, debes pegarlo en Thisworkbook

Si no va relacionado con ningun evento, lo pones en un módulo

¿Ok?

A ver finalmente mi Macro copiada en UNA HOJA quedó así:

Worksheet_SelectionChange

Sub Reprogramación()
' Reprogramación Macro activado mediante CTRL + SHIFT + R

If Not Intersect(Target, Range("C8:N400")) Is Nothing Then
End If

ActiveSheet.Unprotect ("acceso2017")
If ActiveCell.FormulaR1C1 = "" Then
MsgBox ("La celda seleccionada no contiene programación")
ElseIf ActiveCell.FormulaR1C1 = "0" Then
MsgBox ("No es posible la reprogramación")
ElseIf ActiveCell.FormulaR1C1 = "X" Then
ActiveCell.FormulaR1C1 = "0"
Load Formulario_Reprogramación
Formulario_Reprogramación.Show
End If
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
End Sub

Pero ahora presiono mi CTRL+SHIFT+R y no pasa nada :(

¿Has puesto la macro como indica el punto 5 de este enlace? (sheet1 = Hoja1)

http://excelyvba.com/ejecutar-macro-excel/ 

Otra cuestión es que esta macro está junto a un evento, se ejecuta cada vez que se selecciona una nueva celda, por tanto que tenga un atajo de teclado no tiene sentido, ya que es automática.

El código correcto es:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Not Intersect(Target, Range("C8:N400")) Is Nothing Then
ActiveSheet.Unprotect ("acceso2017")
If ActiveCell.FormulaR1C1 = "" Then
MsgBox ("La celda seleccionada no contiene programación")
ElseIf ActiveCell.FormulaR1C1 = "0" Then
MsgBox ("No es posible la reprogramación")
ElseIf ActiveCell.FormulaR1C1 = "X" Then
ActiveCell.FormulaR1C1 = "0"
Load Formulario_Reprogramación
Formulario_Reprogramación.Show
End If
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Else
End If

End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas