Seleccionar un rango

Estos ejemplos muestran cómo seleccionar el rango usado, que incluye las celdas con formato que no contienen datos, y cómo seleccionar un rango de datos, que incluye las celdas que contiene los datos reales.

Código de ejemplo provisto por: Tom Urtis, Atlas Programming Management

Selección del rango usado

En este ejemplo se muestra cómo seleccionar el intervalo usado en la hoja actual, que incluye celdas con formato que no contienen datos, mediante la propiedad UsedRange del objeto Worksheet y el método Select del objeto Range. A continuación, muestra la dirección al rango del usuario.

Sub SelectUsedRange()
    ActiveSheet.UsedRange.Select
    MsgBox "The used range address is " & ActiveSheet.UsedRange.Address(0, 0) & ".", 64, "Used range address:"
End Sub

Selección de un rango de datos a partir de la celda A1

En este ejemplo se muestra cómo seleccionar un rango de datos en la hoja actual, comenzando por la celda A1, y cómo mostrar la dirección del rango para el usuario. El rango de datos no incluye las celdas que tienen un formato que no contiene datos. Para obtener el intervalo de datos, en este ejemplo se busca la última fila y la última columna que contienen datos reales mediante el método Find del objeto Range.

Sub SelectDataRange()
    Dim LastRow As Long, LastColumn As Long
    LastRow = Cells.Find(What:="*", After:=Range("A1"), SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
    LastColumn = Cells.Find(What:="*", After:=Range("A1"), SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
    Range("A1").Resize(LastRow, LastColumn).Select
    MsgBox "The data range address is " & Selection.Address(0, 0) & ".", 64, "Data-containing range address:"
End Sub

Selección de un rango de datos de una ubicación inicial desconocida

En este ejemplo se muestra cómo seleccionar un rango de datos en la hoja actual cuando no se conoce la ubicación inicial y cómo mostrar la dirección del rango para el usuario. El rango de datos no incluye las celdas que tienen un formato que no contiene datos. Para obtener el intervalo de datos, en este ejemplo se busca la primera y última fila y columna que contienen datos reales mediante el método Find del objeto Range.

Sub UnknownRange()
    If WorksheetFunction.CountA(Cells) = 0 Then
        MsgBox "There is no range to be selected.", , "No cells contain any values."
        Exit Sub
    Else
        Dim FirstRow&, FirstCol&, LastRow&, LastCol&
        Dim myUsedRange As Range
        FirstRow = Cells.Find(What:="*", SearchDirection:=xlNext, SearchOrder:=xlByRows).Row
        
        On Error Resume Next
        FirstCol = Cells.Find(What:="*", SearchDirection:=xlNext, SearchOrder:=xlByColumns).Column
        If Err.Number <> 0 Then
            Err.Clear
            MsgBox _
            "There are horizontally merged cells on the sheet" & vbCrLf & _
            "that should be removed in order to locate the range.", 64, "Please unmerge all cells."
            Exit Sub
        End If
        
        LastRow = Cells.Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByRows).Row
        LastCol = Cells.Find(What:="*", SearchDirection:=xlPrevious, SearchOrder:=xlByColumns).Column
        Set myUsedRange = Range(Cells(FirstRow, FirstCol), Cells(LastRow, LastCol))
        myUsedRange.Select
        MsgBox "The data range on this worksheet is " & myUsedRange.Address(0, 0) & ".", 64, "Range address:"
    End If
End Sub

Acerca del colaborador

Tom Urtis, MVP, es el fundador de Atlas Programming Management, una empresa de Silicon Valley que ofrece soluciones empresariales integrales de Microsoft Office y Excel. Tom tiene más de 25 años de experiencia en la administración de negocios y el desarrollo de aplicaciones de Microsoft Office. Es, además, coautor de "Holy Macro! 2500 ejemplos de VBA para Excel".

Soporte técnico y comentarios

¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.