Modificar primera macro

Hola, Salud.
He creado mi primera macro que consiste en hacer una ordenación de una lista de nombres, pero se ejecuta cuando abro el libro o con las teclas ctrl+z. Podría hacerse cuando ingresases un dato en dicha lista.
Macro:
Sub ordenar()
Application.CommandBars("Stop Recording").Visible = True
Range("H7:H51").Select
Selection.Sort Key1:=Range("H7"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End Sub

1 Respuesta

Respuesta
1
Si, podrías ejecutar la macro en el evento Change de la hoja donde está la lista:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 8 Then
ordenar
End If
End Sub
Lo que te queda por resolver en la rutina Ordenar es fijar el rango como:
mirango= "H7:H" & filalibre
donde filalibre será la última fila con datos
Dim filalibre As Integer
filalibre = Range("H7").End(xlDown).Row
Hola Elsa. Gracias por contestar, pero no la se hacer funcionar, mi experiencia en macros es poca esta que hice fue grabándola
La he escrito así:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 8 Then
ordenar
mirango = "H7:H" & filalibre
Dim filalibre As Integer
filalibre = Range("H7").End(xlDown).Row
Selection.Sort Key1:=Range("H7"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End If
End Sub
¿Es correcta?
Un saludo y Salud
Te ajusto las ubicaciones de las rutinas:
En el margen izquierdo del Editor, seleccioná la hoja donde harás el ordenamiento y copia esta parte:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 8 Then
'llama a la subrutina ordenar que ya tenes
ordenar
End If
End Sub
La tuya dejala en el módulo donde estaba, pero necesitaba algunos cambios, quedándote así:
Sub ordenar()
Application.CommandBars("Stop Recording").Visible = True
Dim filalibre As Integer
Dim mirango as string
filalibre = Range("H7").End(xlDown).Row
mirango = "H7:H" & filalibre
Range(mirango).Select
Selection.Sort Key1:=Range("H7"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
End Sub
Ahora probá de ingresar datos en tu columna H. Debiera ordenarte hasta lo último ingresado.
Cualquier dificultad me volvés a contactar.
Saludos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas