Para Dam - Macro desordenar

Tengo esta macro que me proporcionaste que desordena los datos de las columna I desde I6 hasta la última celda activa

Sub desordenar_datos()
'por.DAM
Application.ScreenUpdating = False
actual = ActiveSheet.Name
uf = Range("I" & Rows.Count).End(xlUp).Row
Range("I6:I" & uf).Copy
Sheets.Add
nueva = ActiveSheet.Name
Range("B1").Select
ActiveSheet.Paste
Range("A1").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "=RAND()"
Range("A1").Select
uf = Range("B" & Rows.Count).End(xlUp).Row
Selection.AutoFill Destination:=Range("A1:A" & uf)
Columns("A:B").Select
Selection.Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlNo, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range("B1:B" & uf).Copy
Sheets(actual).Select
Range("I6").Select
ActiveSheet.Paste
Application.DisplayAlerts = False
Sheets(nueva).Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub

La macro va bien pero tiene un problema importante. Si la ejecutas sin datos en la columna I se detiene en: Selection.AutoFill Destination:=Range("A1:A" & uf) y te borra toda la hoja, datos, formatos, etc, y en A1 te escribe un número decimal. En principio lo solucioné cerrando sin guardar cambios.

He probado anteponerle

If Range("I6") = "" Or Range("I6") = 0 Then
Range("C2").Select
Else

que ejecute la macro.

Y parece que funciona.

No se si será suficiente o habrá otra solución más segura.

Espero, si no es mucha molestia, tu opinión u otra solución si la hubiere.

1 respuesta

Respuesta
1

Está bien la solución que pusiste, incluso, si no hay datos, podrías agregar un mensaje:

MsgBox "No hay datos a desordenar"

Saludos. Dam

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas