14/07/2006, 02:02
|
| Colaborador | | Fecha de Ingreso: diciembre-2003 Ubicación: Desde una destilería
Mensajes: 2.584
Antigüedad: 21 años, 1 mes Puntos: 144 | |
Prueba esta macro, a ver si es lo que buscas:
Código:
Sub Ordenar()
On Error Resume Next
'Nos posicionamos en cualquier celda del rango de celdas a ordenar
ActiveCell.Activate
'Si la celda donde estamos, está vacía,
'nos desplazamos a la línea llamada "sin_orden"
If Trim(ActiveCell.Value) = "" Then GoTo sin_orden
'Nos desplazamos a la primera celda del rango, siempre y cuando no estemos
'en la primera fila con datos
celda_inicial = ActiveCell.Address
If Trim(ActiveCell.Offset(-1, 0).Value) <> "" Then
Selection.End(xlUp).Select
celda_inicial = ActiveCell.Address
End If
'Nos desplazamos a la izquierda, por si estamos en una columna distinta
'de la primera (de la primera del rango que queremos ordenar, no de la primera columna
'de la hoja de cálculo, ya que puede que no queramos ordenar la columna A, por ejemplo).
'Nos desplazamos a la izquierda, solo si el dato de la columna de la izquieda no está vacío,
'ya que si lo está, no será un rango contínuo de celdas
If Trim(ActiveCell.Offset(0, -1).Value) <> "" Then
Selection.End(xlToLeft).Select
celda_inicial = ActiveCell.Address
End If
'Ahora que estamos en la primera celda de la izquierda del rango que queremos ordenar,
'seleccionamos todo el rango contínuo de celdas (hasta el final de datos contínuos)
If Trim(ActiveCell.Offset(1, 0).Value) <> "" Then Range(Selection, Selection.End(xlDown)).Select
If Trim(ActiveCell.Offset(0, 1).Value) <> "" Then Range(Selection, Selection.End(xlToRight)).Select
Selection.Sort Key1:=Range(celda_inicial), Order1:=xlAscending, Header:=xlNo, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal
Exit Sub
sin_orden:
'Mostramos un mensaje de alerta indicando que no podemos ordenar nada,
'ya que no hay datos para ordenar
Mensaje = MsgBox(Chr(13) & " No estás situado en una celda con datos," & Chr(13) & " para poder proceder a ordenar el rango. ", vbOKOnly, "Pues va a ser que no...")
End Sub
Salu2
Última edición por 3pies; 14/07/2006 a las 02:10 |