Thanks Thanks:  0
Likes Likes:  0
Results 1 to 6 of 6

Thread: rango de celdas para activacion de macro por cambio de valor

  1. #1
    New Member
    Join Date
    Nov 2006
    Posts
    3
    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Default rango de celdas para activacion de macro por cambio de valor

    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!!!

  2. #2
    Board Regular galileogali's Avatar
    Join Date
    Oct 2005
    Location
    Quiroga, Argentine
    Posts
    748
    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Default

    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

  3. #3
    New Member
    Join Date
    Nov 2006
    Posts
    3
    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Default Gracias!!!

    Muchas Gracias!!! Funciono muy bien el hacerlo como me sugieres!!!

  4. #4
    New Member
    Join Date
    Nov 2006
    Posts
    3
    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Default Gracias!!!

    Muchas Gracias!!! Funciono muy bien el hacerlo como me sugieres!!!

  5. #5
    MrExcel MVP
    Int'l Moderator
    Greg Truby's Avatar
    Join Date
    Jun 2002
    Location
    39° 17' 15" N, -94° 40' 26" W
    Posts
    9,998
    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    1 Thread(s)

    Default

    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.

    Hola, Galí. Todo bien, espero.
    Greg
    ………………………………………………
    Home: XL 2003, 2007, 2010, and 2013 on Windows 7
    Work: XL 2013, 2016 on Windows 10
    Please use CODE tags - especially for longer excerpts of code.

  6. #6
    New Member
    Join Date
    May 2019
    Posts
    1
    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Default Re: rango de celdas para activacion de macro por cambio de valor

    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.

Some videos you may like

User Tag List

Like this thread? Share it with others

Like this thread? Share it with others

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •