rango de celdas para activacion de macro por cambio de valor

brantis

New Member
Joined
Nov 21, 2006
Messages
3
Vi en otra liga que contestaban como ligar la activacion de un macro con el cambio de valor de una celda y pusieron esta respuesta:

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$D$10" Then Mimacro

End Sub

Mi pregunta es como hago lo mismo pero para un rango de celdas en vez de que solo cheque el cambio de una sola??????

Muchas Gracias!!!
 

Excel Facts

Is there a shortcut key for strikethrough?
Ctrl+S is used for Save. Ctrl+5 is used for Strikethrough. Why Ctrl+5? When you use hashmarks to count |||| is 4, strike through to mean 5.
Hya muchas respuesta a esta pregunta. Una de carcater general es la que usa Intersect

Private Sub Worksheet_Change(ByVal Target As Range)


dim rng as range
set rng = Range("a1:b34") ' el rango que gnerara el evento es "a1:b34"

If intersect(Target,rng) is Nothing then exit sub

Mi Macro

End Sub

GALILEOGALI
 
Upvote 0
Hola brantis y bienvenido a MrExcel. Como Galí ya indicó, la función clave es Intersect() y el objecto vacio Nothing y el operador de comparación de objetos IS

En casos asi (tomando una acción dentro de _Change) siempre aconsejo que uno utilice rangos nombrados en vez de direcciones escritos dentro del macro. Con un rango nombrado, si el usuario (o usted) inserta o suprima filas/columnas/celdas el macro sigue funcionando bien. Pero si pone la dirección de forma "hard coded" en el macro, insertar o suprimir a la izquierda o arriba del blanco causa problemas. Ejemplo:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
    '// el cuaderno tiene un rango definido "TestRange"
    
    Dim rngCell As Range, rngIntersect As Range
    
    If Not Intersect(Range("TestRange"), Target) Is Nothing Then
        Set rngIntersect = Intersect([TestRange], Target)
        For Each rngCell In rngIntersect.Cells
            Application.EnableEvents = False
            MiMacro rngCell
            Application.EnableEvents = True
        Next rngCell
    End If
End Sub

Private Sub MiMacro(rngTarget As Range)
    rngTarget.Formula = UCase(rngTarget.Formula)
End Sub
Favor note el uso de
Code:
Application.EnableEvents
Por lo general cuando un está haciendo algo dentro de una rutina de eventos es buenas idea apagar los eventos. Si no lo hace es muy fácil generar un bucle infinito.
<hr />Hola, Galí. Todo bien, espero.
 
Upvote 0
Hola disculpen soy nuevo en este foro, sé que este post ya tiene sus años, pero me encuentro en una situación en la que busco pedirles de su valiosa ayuda y gran experienciia; estoy en un caso similar, tengo 2 columnas con lista desplegables la 2a depende de lo que se seleccione de la primera; mi problema es que requiero que si al cambiar la primer columna, la segunda borré o reinicie lo que antes seleccinado; tengo un código pero es para una sola celda, y yo busco fuera para un rango, es decir más lineas hacia abajo de la misma columna (secundaria), el código es:
If Target = Range("A2") Then 'en esta primer columna se selecciona de la lista desplegable Range("B2").Value = "" 'en eta otra esta la segunda columna donde hay lista desplegable que borra la celda si cambia la primera.
End If

End Sub

Su amable experiencia me es de gran ayuda, agradezco cualquier comentario.
 
Upvote 0

Forum statistics

Threads
1,213,524
Messages
6,114,117
Members
448,549
Latest member
brianhfield

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top