Ordenar el área Seleccionada |
Responder |
Autor | |
Gladiador
Asiduo Unido: 22/Junio/2006 Localización: Venezuela Estado: Sin conexión Puntos: 220 |
Tema: Ordenar el área Seleccionada Enviado: 03/Abril/2021 a las 05:00 |
Gracias AnSanVal, funciona bien.
La macro quedó como sigue: Dim myRange, mycol As Range Set myRange = Selection Set mycol = Selection.Resize(Selection.Rows.Count, 1) ' ActiveSheet.Sort.SortFields.Clear ActiveSheet.Sort.SortFields.Add2 Key:=mycol, _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ xlSortNormal With ActiveSheet.Sort .SetRange myRange .Header = xlGuess .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Muy agradecido Se puede cerrar el hilo Gladiador
|
|
AnSanVal
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Unido: 16/Marzo/2005 Localización: España Estado: Sin conexión Puntos: 5974 |
Enviado: 02/Abril/2021 a las 22:42 |
«... mi problema radica en cómo instruir a la macro para que tome como la columna de "ordenamiento" la primera columna de la selección...» Editado por AnSanVal - 02/Abril/2021 a las 22:43 |
|
Saludos desde Tenerife.
|
|
Gladiador
Asiduo Unido: 22/Junio/2006 Localización: Venezuela Estado: Sin conexión Puntos: 220 |
Enviado: 02/Abril/2021 a las 20:42 |
Hola, gracias por las respuestas y las aclaratorias.
Gracias SkaryBloni por tu aporte Gracia AnSanVal por tus observaciónes. Tengo una tabla con fechas en la columna C, luego datos en las columnas D,E,F,G,H A veces se introducen datos, con fechas anteriores a la última fecha ingresada, y deben ser ordenados por fechas para mantener la secuencia. Luego de revisar detenidamente la macro me he dado cuenta de lo siguiente: Dim myRange As Range Set myRange = Selection ActiveSheet.Sort.SortFields.Clear ActiveSheet.Sort.SortFields.Add2 Key:=Range( _ "C100:C109"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ xlSortNormal With ActiveSheet.Sort .SetRange Range("C100:H109") .Header = xlGuess .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With El rango C100:C109 corresponde a la columna que se va a ordenar; Mientras el rango C100:H109 corresponde al área seleccionada. Por lo tanto myRange solo puedo usarlo aqui: With ActiveSheet.Sort .SetRange myRange . . y funciona. Ahora, mi problema radica en cómo instruir a la macro para que tome como la columna de "ordenamiento" la primera columna de la selección? En este caso la columna "C" Me gustaría usar la macro en otras hojas en donde la columna de fecha no está necesariamente en la columna "C" Gracias |
|
AnSanVal
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Unido: 16/Marzo/2005 Localización: España Estado: Sin conexión Puntos: 5974 |
Enviado: 01/Abril/2021 a las 21:29 |
Suponiendo que tu afirmación...
« Es posible cambiar la instrucción ActiveWorkbook.Worksheets("Cuenta") por ActiveSheet » ... pretende ser una pregunta, la respuesta es Sí . |
|
Saludos desde Tenerife.
|
|
AnSanVal
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Unido: 16/Marzo/2005 Localización: España Estado: Sin conexión Puntos: 5974 |
Enviado: 01/Abril/2021 a las 21:16 |
A mi me funciona sin error 'tal cual' tienes el código.
Teniendo en cuenta que... - Tu macro no trabaja con rangos absolutos sino con la variable myRange. - Sin ver como son tus datos. - Sin ver que rango tienes seleccionado. ... es decir: como lo haces... no puedo decirte lo que estás haciendo mal. |
|
Saludos desde Tenerife.
|
|
SkaryBlondi
Habitual Unido: 24/Octubre/2020 Localización: Asturias Estado: Sin conexión Puntos: 89 |
Enviado: 01/Abril/2021 a las 21:01 |
Hola Prueba con .SetRange Range(myRange) Saludos,
|
|
Gladiador
Asiduo Unido: 22/Junio/2006 Localización: Venezuela Estado: Sin conexión Puntos: 220 |
Enviado: 01/Abril/2021 a las 20:42 |
Buenas a todos.
Nuevamente solicito su valiosa ayuda con la siguiente instrucción He grabado una macro para ordenar fechas del mas antiguo al mas nuevo, según el área que he seleccionado Sin embargo me da un error en tiempo de ejecución, cuando le digo "Depurar", se coloca en la última instrucción "Apply" Esta es la macro Dim myRange As Range Set myRange = Selection ' ActiveWorkbook.Worksheets("Cuenta").Sort.SortFields.Clear ActiveWorkbook.Worksheets("Cuenta").Sort.SortFields.Add2 Key:=myRange, _ SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ xlSortNormal With ActiveWorkbook.Worksheets("Cuenta").Sort .SetRange myRange .Header = xlGuess .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply (acá es donde indica que es el error) End With Que puedo estar haciendo mal? Otro punto, de esta misma consulta. Es posible cambiar la instrucción ActiveWorkbook.Worksheets("Cuenta") por ActiveSheet La idea es grabar la Macro en mi libro Personal, de manera de poder usarlo en cualquier hoja en la que me encuentre trabajado. Gracias por la ayuda |
|
Responder | |
Tweet
|
Ir al foro | Permisos de foro Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |