Selecionar um Intervalo

Esses exemplos mostram como selecionar o intervalo usado, que inclui células formatadas que não contêm dados e como selecionar um intervalo de dados, que inclui células que contêm dados reais.

Código de exemplo fornecido por: Tom Urtis, Atlas programação de gerenciamento

Selecionando o intervalo usado

Este exemplo mostra como selecionar o intervalo usado na planilha atual, que inclui células formatadas que não contêm dados, usando a propriedade UsedRange do objeto Worksheet e o método Select do objeto Range. Em seguida, ele exibe o endereço do intervalo para o usuário.

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

Selecionando um intervalo de dados começando na célula A1

Este exemplo mostra como selecionar um intervalo de dados na planilha atual, começando na célula A1, e exibir o endereço do intervalo para o usuário. O intervalo de dados não inclui células formatadas que não contêm dados. Para obter o intervalo de dados, este exemplo localiza a última linha e a última coluna que contêm dados reais usando o método Find do 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

Selecionar um intervalo de dados de local inicial desconhecido

Este exemplo mostra como selecionar um intervalo de dados na planilha atual quando você não sabe o local inicial e exibir o endereço do intervalo para o usuário. O intervalo de dados não inclui células formatadas que não contêm dados. Para obter o intervalo de dados, este exemplo localiza a primeira e a última linha e coluna que contêm dados reais usando o método Find do 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

Sobre o colaborador

MVP Tom Urtis é o fundador da Atlas programação gerenciamento, uma empresa com soluções de gerenciamento completas de serviço do Microsoft Office e Excel localizada no Silicon Valley. Tom tem mais de 25 anos de experiência do gerenciamento de negócios e desenvolvimento dos aplicativos Microsoft e é co-autor de "Holy Macro! São 2.500 exemplos de VBA do Excel."

Suporte e comentários

Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.