Saltar al contenido

Como usar correctamente Selection.End(xlUp)?


gmcompu

Recommended Posts

publicado

Hola amigos del foro ayudaexcel

Tengo el siguiente inconveniente, como ven en el codigo, me paro en una celda, y veo si esta vacia, si no lo esta descombina la celda, y baja otra y asi hasta que este vacia la celda siguiente. Hasta ahi funciona bien, el problema es que una vez que termino quiero seleccionar todas las celdas hacia arriba que tengan algo, con:

Range(Selection, Selection.End(xlUp)).Select

Y solamente me marca la celda seleccionada, y la inmediatamente superior, pero no todas. EN mi ejemplo tengo datos en el rango H18:H27, con el do fui hasta la H27, y cuando intento con el código seleccionar el rango, solo me selecciona la H27 y la H28.

Alguien me podría dar una mano? Les copio el código abajo, desde ya muchas gracias!

Do

ActiveCell.Offset(1, 0).Select

If ActiveCell <> "" Then

ActiveCell.UnMerge

Else

Exit Do

End If

Loop While ActiveCell.Offset(1, 0) <> " "

Range(Selection, Selection.End(xlUp)).Select

Application.CutCopyMode = False

Selection.Delete Shift:=xlToLeft

PD: Intente utilizar la etiqueta HTML como menciona en las normas, pero me pone todo el codigo seguido y se hace ilegible!

publicado

Bueno exactamente no se lo pretendes pero haces un bucle para recorrer la columna, el mismo bucle para desvincular celdas, bucle para buscar la celda activa y de ahí seleccionar hacia arriba para luego borrar.

Ya que tienes que seleccionar antes que nada la celda activa y por lo que veo lo único que quieres es borrar de la celda activa hacia abajo este te puede servir

Range(Selection, Selection.End(xlDown)).Select
Selection.Delete Shift:=xlToLeft[/CODE]

Sólo es una idea

publicado

Selecciona la celda H18 y ejecuta



Set Inicio = ActiveCell
Do Until Trim(ActiveCell) = ""
ActiveCell.UnMerge
Set Fin = ActiveCell
ActiveCell.Offset(1, 0).Select
Loop
Range(Inicio, Fin).Delete Shift:=xlToLeft


[/code]

Otra alternativa sería, selecciona el rango H18:H27 y ejecuta:



Selection.UnMerge
Range(ActiveCell, ActiveCell.Offset(Selection.Rows.Count - 1, 0)).Delete Shift:=xlToLeft


[/CODE]

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.