Llamar macro para ejecutarse cada vez que haya un cambio en cualquier parte de la hoja.

De nuevo Dante!

¿Podrías ayudarme con una pequeña duda que tengo?

Tengo una macro para orden alfabetico, pero quiero automatizarla. Pensabá en colocarla con un modulo y hacer un llamado a la macro atravez de un evento. Ejemplo:

Private Sub Worksheet_Change(ByVal Target As String)
Call Macro5
End Sub

Pero me lanza error, al ejecutarse.

Si te sirvé de algo, te mando la macro.

Sub Macro5()
    u = Range("A" & Rows.Count).End(xlUp).Row
    ActiveWorkbook.Worksheets("Hoja1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Hoja1").Sort.SortFields.Add Key:=Range("A1:A" & u), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("Hoja1").Sort.SortFields.Add Key:=Range("B1:B" & u), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Hoja1").Sort
        .SetRange Range("A1:G" & u)
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub

P.D.: Esta macro, la hizisté tú, para otro usuario, solamente la adapté a mis necesidades, así que

1 respuesta

Respuesta
2

H o l a:

En el evento change tienes string y debe ser Range

Tienes esto:

Private Sub Worksheet_Change(ByVal Target As String)
Call Macro5
End Sub

Y debe ser así:

Private Sub Worksheet_Change(ByVal Target As Range)
Call Macro5
End Sub


Añade tu respuesta

Haz clic para o

Más respuestas relacionadas