Seleccionar buscando ultima celda escrita

Estoy tratando de hacer un macro que seleccione un rango de cledas y las ordene alfabéticamente. Pero es una tabla que se le agregan datos.
Si pongo, por ej Seleccionar C3:M50, cuando agregue datos, solo me selecciona hasta m50 pero yo voy a tener Mxx
¿Cómo hacer un macro para seleccionar desde C3 a Mxx?

1 Respuesta

Respuesta
1
Te la voy a explicar por partes.
En primer lugar en la fila 2 no puede habar datos.
En la columna B no deb haber datos.
La siguiente es la macro genera por excel
Paso 1: --> Crear el Rango de Datos
Sub Crear_Rango()
' Crear_Rango Macro
' Macro grabada el 21/10/2009 por Hector Reyes
    Range("C3").Select
    Selection.CurrentRegion.Select
    ' La siguiente instruccion es la que genera la macro hay que cambiarla por la de abajo
    'ActiveWorkbook.Names.Add Name:="qqq", RefersToR1C1:="=Hoja1!R3C3:R10C5"
    Selection.Name = "Datos"  'Esta instruccion fue Modificada o adicionada
    Range("C3").Select
End Sub
Paso 2: --> Crear la macro de ordenar por la columna nombre ( en mi ejemplo solo tengo las columnas C, DE y E con datos.
Sub Ordenar_Rango()
'
' Ordenar_Rango Macro
' Macro grabada el 21/10/2009 por Hector Reyes
    Application.Goto Reference:="Datos"
    Selection.Sort Key1:=Range("D4"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
    Range("C3").Select
End Sub
¿Es suficiente para ti?
Hola y gracias por la respuesta
Aclaro que soy novata en esto y puede que no te entienda
Intente hacer lo que me has explicado, pero no funciona
Lo que quiero es modificar esta parte de mi macro para ue seleccione un rango a medida que se vayan agregando filas, y que eso después lo ordene (la fila 1 y 2 son de títulos, en la columna B esta el nombre
Yo lo tengo así:
Para seleccionar el rango
Range("B3:M86").Select
Para ordenar alfabeticamente
Selection.Sort Key1:=Range("C3"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
End Sub
    Selection.Sort Key1:=Range("C3"), Order1:=xlAscending, Header:=xlGuess, _        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _        DataOption1:=xlSortNormalEnd Sub
¿Qué tengo que poner en M86 para que busque en que M esta la ultima fila escrita?
Muchas gracias!
Otra cosa, ¿hay alguna forma de hacer que un macro SOLO se pueda correr en UNA hoja determinada? O sea, ¿qué no manden por error Ctro+xx en la hoja equivocada?
Muchas gracias
Para ir a la ultima fila que tiene información en la columna M haz lo siguiente:
Asumo que hay información en todas las celdas de la columna M
Range("M3").Select
Selection.End(xlDown).Select
Otra forma es ir a la ultima celda (fial columna) que tiene informacion.
ActiveCell.SpecialCells(xlLastCell).Select 
hecho lo anterior crea una variable asi
vran = "C3:M" &trim(str(activecell.row)
La macro quedaría de la siguiente manera. La hie en una hoja de calculo y ta al transcribo si deses copia la directamente, ya funciona.
Sub Order_Rango()
' Macro1 Macro
' Macro grabada el 22/10/2009 por hr
    Sheets("Clientes").Select   ' mi hoja la llame Clientes
    Range("M3").Select
    'Selection. End(xlDown). Select  ' esta linea la debes comentariar si no hay informacion en todas las celdas de la culumna M
    'o
    ActiveCell.SpecialCells(xlLastCell).Select  ' esta linea quita la coma cuando no hay datos en la columna M
    vran = "C3:M" & Trim(Str(ActiveCell.Row))
    ' este es tu codigo
    'Range("B3:M86").Select
    'cambia por este
    Range(vran).Select
    'Para ordenar alfabeticamente
    Selection.Sort Key1:=Range("C3"), Order1:=xlAscending, Header:=xlGuess, _
        OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
        DataOption1:=xlSortNormal
End Sub

Para ejecuatar una macro en una Hoja
Sheets("Nombre_Hoja"). Select   ' Donde Nombre_Hoja es el nombre de tu hoja.
Copia las lineas subraydas en el explorador de proyectos de tu macro y ya

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas