Macro ordenar, falla cuando se queda una fila en blanco

Tengo un botón llamado ORDENAR, que ordena una lista de operarios con las horas, los ordena alfabéticamente. Cuando presiono dicho botón ejecuta una macro ORDENAR.

Sub ordenar()

f_enc = 22
Set h1 = Sheets("ALBARAN")
u = f_enc + 1
Do While Cells(u, "A") <> ""
u = u + 1
Loop
u = u - 1
With h1.Sort
.SortFields.Clear: .SortFields.Add Key:=Range("B" & f_enc + 1 & ":B" & u)
.SetRange Range("A" & f_enc & ":J" & u): .Header = xlYes: .Apply
End With
End Sub

Todo va genial, hasta que por algún motivo elimino un operario, dejando una fila en blanco. Entonces desde esa vacía deja de ordenarme las filas... Ordena hasta esa vacía.

Como puedo solucionarlo

1 respuesta

Respuesta
2

Te anexo la macro actualizada

Sub ordenar()
'Act.Por.Dante Amor
    '
    Set h1 = Sheets("ALBARAN")
    u = h1.UsedRange.Rows(h1.UsedRange.Rows.Count).Row
    f_enc = 22
    With h1.Sort
        .SortFields.Clear: .SortFields.Add Key:=h1.Range("B" & f_enc + 1 & ":B" & u)
        .SetRange h1.Range("A" & f_enc & ":J" & u): .Header = xlYes: .Apply
    End With
End Sub

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

Ahora existe otro problema. Yo introduzco los datos a partir de la línea 23... pues cuando le doy a ejecutar la macro lo que sucede es que los datos se van al final de la lista...

Como puedo solucionarlo

Lo que sucede es, o tienes fórmulas con resultados en blanco o tienes espacios en algunas celdas, revisa tus datos

Yo quiero que se ordene una serie de filas de la 23  ala 48, pero empiezo a poner datos en la 23 y por ejemplo llego ala 30... pero al ordenarse estos van para el final... dejando el 23 y el resto consecutivamente vacío.. Y no quiero que suceda eso

Gracias de antemano

Envíame tu archivo con el problema para revisar los datos

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “maria fermin

Te anexo la macro actualizada

Sub ordenar()
'Por.Dante Amor
    Application.ScreenUpdating = False
    Set h1 = Sheets("ALBARAN")
    With h1.Sort
        .SortFields.Clear: .SortFields.Add Key:=h1.Range("B23:B48"), Order:=xlDescending
        .SetRange h1.Range("A22:J48"): .Header = xlYes: .Apply
    End With
    fila = 23
    Do While h1.Cells(fila, "B") <> ""
        fila = fila + 1
    Loop
    fila = fila - 1
    With h1.Sort
        .SortFields.Clear: .SortFields.Add Key:=h1.Range("B23:B" & fila), Order:=xlAscending
        .SetRange h1.Range("A22:J" & fila): .Header = xlYes: .Apply
    End With
End Sub

sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas