Como selecionar células/intervalos usando procedimentos do Visual Basic no Excel
A Microsoft oferece exemplos de programação somente para ilustração, sem garantias expressas ou implícitas. Isso inclui, mas não está limitado a, as garantias implícitas de qualidade comercial ou conformidade para uma determinada finalidade. Este artigo supõe que você conhece a linguagem de programação que está sendo demonstrada e as ferramentas usadas nos processos de criação e depuração. Os engenheiros de suporte da Microsoft podem ajudá-lo, fornecendo a explicação da funcionalidade de determinado procedimento, mas não modificarão estes exemplos para fornecer funcionalidade adicional nem criarão procedimentos específicos para atender às suas necessidades específicas. Os exemplos neste artigo usam os métodos do Visual Basic listados na tabela a seguir.
Method Arguments
------------------------------------------
Activate none
Cells rowIndex, columnIndex
Application.Goto reference, scroll
Offset rowOffset, columnOffset
Range cell1
cell1, cell2
Resize rowSize, columnSize
Select none
Sheets index (or sheetName)
Workbooks index (or bookName)
End direction
CurrentRegion none
Os exemplos neste artigo usam as propriedades na tabela a seguir.
Property Use
---------------------------------------------------------------------
ActiveSheet to specify the active sheet
ActiveWorkbook to specify the active workbook
Columns.Count to count the number of columns in the specified item
Rows.Count to count the number of rows in the specified item
Selection to refer to the currently selected range
Como selecionar uma célula na planilha ativa
Para selecionar a célula D5 na planilha ativa, você pode usar um dos seguintes exemplos:
ActiveSheet.Cells(5, 4).Select
-or-
ActiveSheet.Range("D5").Select
Como selecionar uma célula em outra planilha na mesma pasta de trabalho
Para selecionar a célula E6 em outra planilha na mesma pasta de trabalho, você pode usar um dos seguintes exemplos:
Application.Goto ActiveWorkbook.Sheets("Sheet2").Cells(6, 5)
-or-
Application.Goto (ActiveWorkbook.Sheets("Sheet2").Range("E6"))
Ou você pode ativar a planilha e usar o método 1 acima para selecionar a célula:
Sheets("Sheet2").Activate
ActiveSheet.Cells(6, 5).Select
Como selecionar uma célula em uma planilha em uma pasta de trabalho diferente
Para selecionar a célula F7 em uma planilha em uma pasta de trabalho diferente, você pode usar um dos seguintes exemplos:
Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Cells(7, 6)
-or-
Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("F7")
Ou você pode ativar a planilha e usar o método 1 acima para selecionar a célula:
Workbooks("BOOK2.XLS").Sheets("Sheet1").Activate
ActiveSheet.Cells(7, 6).Select
Como selecionar um intervalo de células na planilha ativa
Para selecionar o intervalo C2:D10 na planilha ativa, você pode usar qualquer um dos seguintes exemplos:
ActiveSheet.Range(Cells(2, 3), Cells(10, 4)).Select
ActiveSheet.Range("C2:D10").Select
ActiveSheet.Range("C2", "D10").Select
or
ActiveSheet.Range(ActiveSheet.Cells(2, 3), ActiveSheet.Cells(10, 4)).Select
or, alternatively, it could be simplified to this:
Range(Cells(2, 3), Cells(10, 4)).Select
Como selecionar um intervalo de células em outra planilha na mesma pasta de trabalho
Para selecionar o intervalo D3:E11 em outra planilha na mesma pasta de trabalho, você pode usar um dos seguintes exemplos:
Application.Goto ActiveWorkbook.Sheets("Sheet3").Range("D3:E11")
Application.Goto ActiveWorkbook.Sheets("Sheet3").Range("D3", "E11")
Ou você pode ativar a planilha e usar o método 4 acima para selecionar o intervalo:
Sheets("Sheet3").Activate
ActiveSheet.Range(Cells(3, 4), Cells(11, 5)).Select
Como selecionar um intervalo de células em uma planilha em uma pasta de trabalho diferente
Para selecionar o intervalo E4:F12 em uma planilha em uma pasta de trabalho diferente, você pode usar um dos seguintes exemplos:
Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("E4:F12")
Application.Goto _
Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("E4", "F12")
Ou você pode ativar a planilha e usar o método 4 acima para selecionar o intervalo:
Workbooks("BOOK2.XLS").Sheets("Sheet1").Activate
ActiveSheet.Range(Cells(4, 5), Cells(12, 6)).Select
Como selecionar um intervalo nomeado na planilha ativa
Para selecionar o intervalo nomeado "Test" na planilha ativa, você pode usar um dos seguintes exemplos:
Range("Test").Select
Application.Goto "Test"
Como selecionar um intervalo nomeado em outra planilha na mesma pasta de trabalho
Para selecionar o intervalo nomeado "Testar" em outra planilha na mesma pasta de trabalho, você pode usar o seguinte exemplo:
Application.Goto Sheets("Sheet1").Range("Test")
Ou você pode ativar a planilha e usar o método 7 acima para selecionar o intervalo nomeado:
Sheets("Sheet1").Activate
Range("Test").Select
Como selecionar um intervalo nomeado em uma planilha em uma pasta de trabalho diferente
Para selecionar o intervalo nomeado "Test" em uma planilha em uma pasta de trabalho diferente, você pode usar o seguinte exemplo:
Application.Goto _
Workbooks("BOOK2.XLS").Sheets("Sheet2").Range("Test")
Ou você pode ativar a planilha e usar o método 7 acima para selecionar o intervalo nomeado:
Workbooks("BOOK2.XLS").Sheets("Sheet2").Activate
Range("Test").Select
Como selecionar uma célula relativa à célula ativa
Para selecionar uma célula que esteja cinco linhas abaixo e quatro colunas à esquerda da célula ativa, você pode usar o seguinte exemplo:
ActiveCell.Offset(5, -4).Select
Para selecionar uma célula que esteja duas linhas acima e três colunas à direita da célula ativa, você pode usar o seguinte exemplo:
ActiveCell.Offset(-2, 3).Select
Observação
Ocorrerá um erro se você tentar selecionar uma célula que esteja "fora da planilha". O primeiro exemplo mostrado acima retornará um erro se a célula ativa estiver nas colunas A a D, já que mover quatro colunas para a esquerda levaria a célula ativa para um endereço de célula inválido.
Como selecionar uma célula relativa a outra célula (não a ativa)
Para selecionar uma célula que esteja cinco linhas abaixo e quatro colunas à direita da célula C7, você pode usar um dos seguintes exemplos:
ActiveSheet.Cells(7, 3).Offset(5, 4).Select
ActiveSheet.Range("C7").Offset(5, 4).Select
Como selecionar um intervalo de deslocamento de células de um intervalo especificado
Para selecionar um intervalo de células com o mesmo tamanho do intervalo nomeado "Test", mas que é deslocado quatro linhas para baixo e três colunas para a direita, você pode usar o seguinte exemplo:
ActiveSheet.Range("Test").Offset(4, 3).Select
Se o intervalo nomeado estiver em outra planilha (não na ativa), ative-a primeiro e selecione o intervalo usando o seguinte exemplo:
Sheets("Sheet3").Activate
ActiveSheet.Range("Test").Offset(4, 3).Select
Como selecionar um intervalo especificado e redimensionar a seleção
Para selecionar o intervalo nomeado "Banco de Dados" e estender a seleção em cinco linhas, você pode usar o seguinte exemplo:
Range("Database").Select
Selection.Resize(Selection.Rows.Count + 5, _
Selection.Columns.Count).Select
Como selecionar um intervalo especificado, desadimensioná-lo e redimensioná-lo
Para selecionar um intervalo de quatro linhas abaixo e três colunas à direita do intervalo nomeado "Banco de Dados" e incluir duas linhas e uma coluna a mais do que o intervalo nomeado, você pode usar o seguinte exemplo:
Range("Database").Select
Selection.Offset(4, 3).Resize(Selection.Rows.Count + 2, _
Selection.Columns.Count + 1).Select
Como selecionar a união de dois ou mais intervalos especificados
Para selecionar a união (ou seja, a área combinada) dos dois intervalos nomeados "Teste" e "Exemplo", você pode usar o seguinte exemplo:
Application.Union(Range("Test"), Range("Sample")).Select
Observação
que ambos os intervalos devem estar na mesma planilha para que este exemplo funcione. Observe também que o método Union não funciona entre planilhas. Por exemplo, essa linha funciona bem.
Set y = Application.Union(Range("Sheet1!A1:B2"), Range("Sheet1!C3:D4"))
mas esta linha
Set y = Application.Union(Range("Sheet1!A1:B2"), Range("Sheet2!C3:D4"))
retorna a mensagem de erro:
Falha no método Union da classe de aplicativo
Como selecionar a interseção de dois ou mais intervalos especificados
Para selecionar a interseção dos dois intervalos nomeados "Teste" e "Exemplo", você pode usar o seguinte exemplo:
Application.Intersect(Range("Test"), Range("Sample")).Select
Observe que ambos os intervalos devem estar na mesma planilha para que este exemplo funcione.
Os exemplos 17-21 neste artigo referem-se ao conjunto de dados de exemplo a seguir. Cada exemplo indica o intervalo de células nos dados de exemplo que seriam selecionados.
A1: Name B1: Sales C1: Quantity
A2: a B2: $10 C2: 5
A3: b B3: C3: 10
A4: c B4: $10 C4: 5
A5: B5: C5:
A6: Total B6: $20 C6: 20
Como selecionar a última célula de uma coluna de dados contíguos
Para selecionar a última célula em uma coluna contígua, use o seguinte exemplo:
ActiveSheet.Range("a1").End(xlDown).Select
Quando esse código for usado com a tabela de exemplo, a célula A4 será selecionada.
Como selecionar a célula em branco na parte inferior de uma coluna de dados contíguos
Para selecionar a célula abaixo de um intervalo de células contíguas, use o seguinte exemplo:
ActiveSheet.Range("a1").End(xlDown).Offset(1,0).Select
Quando esse código for usado com a tabela de exemplo, a célula A5 será selecionada.
Como selecionar um intervalo inteiro de células contíguas em uma coluna
Para selecionar um intervalo de células contíguas em uma coluna, use um dos seguintes exemplos:
ActiveSheet.Range("a1", ActiveSheet.Range("a1").End(xlDown)).Select
-or-
ActiveSheet.Range("a1:" & ActiveSheet.Range("a1"). _
End(xlDown).Address).Select
Quando esse código é usado com a tabela de exemplo, as células A1 a A4 serão selecionadas.
Como selecionar um intervalo inteiro de células não contíguas em uma coluna
Para selecionar um intervalo de células que não são contíguas, use um dos seguintes exemplos:
ActiveSheet.Range("a1",ActiveSheet.Range("a" & ActiveSheet.Rows.Count).End(xlUp)).Select
-or-
ActiveSheet.Range("a1:" & ActiveSheet.Range("a" & ActiveSheet.Rows.Count). _
End(xlUp).Address).Select
Quando esse código for usado com a tabela de exemplo, ele selecionará as células A1 a A6.
Como selecionar um intervalo retangular de células
Para selecionar um intervalo retangular de células ao redor de uma célula, use o método CurrentRegion. O intervalo selecionado pelo método CurrentRegion é uma área limitada por qualquer combinação de linhas em branco e colunas em branco. Veja a seguir um exemplo de como usar o método CurrentRegion:
ActiveSheet.Range("a1").CurrentRegion.Select
Esse código selecionará as células A1 a C4. Outros exemplos para selecionar o mesmo intervalo de células estão listados abaixo:
ActiveSheet.Range("a1", _
ActiveSheet.Range("a1").End(xlDown).End(xlToRight)).Select
-or-
ActiveSheet.Range("a1:" & _
ActiveSheet.Range("a1").End(xlDown).End(xlToRight).Address).Select
Em alguns casos, talvez você queira selecionar as células A1 a C6. Neste exemplo, o método CurrentRegion não funcionará devido à linha em branco na Linha 5. Os exemplos a seguir selecionarão todas as células:
lastCol = ActiveSheet.Range("a1").End(xlToRight).Column
lastRow = ActiveSheet.Cells(ActiveSheet.Rows.Count, lastCol).End(xlUp).Row
ActiveSheet.Range("a1", ActiveSheet.Cells(lastRow, lastCol)).Select
-or-
lastCol = ActiveSheet.Range("a1").End(xlToRight).Column
lastRow = ActiveSheet.Cells(ActiveSheet.Rows.Count, lastCol).End(xlUp).Row
ActiveSheet.Range("a1:" & _
ActiveSheet.Cells(lastRow, lastCol).Address).Select
Como selecionar várias colunas não contíguas de comprimento variável
Para selecionar várias colunas não contíguas de comprimento variável, use o exemplo de macro e tabela de exemplo a seguir:
A1: 1 B1: 1 C1: 1 D1: 1
A2: 2 B2: 2 C2: 2 D2: 2
A3: 3 B3: 3 C3: 3 D3: 3
A4: B4: 4 C4: 4 D4: 4
A5: B5: 5 C5: 5 D5:
A6: B6: C6: 6 D6:
StartRange = "A1"
EndRange = "C1"
Set a = Range(StartRange, Range(StartRange).End(xlDown))
Set b = Range(EndRange, Range(EndRange).End(xlDown))
Union(a,b).Select
Quando esse código é usado com a tabela de exemplo, as células A1:A3 e C1:C6 serão selecionadas.
Observações sobre os exemplos
A propriedade ActiveSheet geralmente pode ser omitida, porque está implícita se uma planilha específica não for nomeada. Por exemplo, em vez de
ActiveSheet.Range("D5").Select
você pode usar:
Range("D5").Select
A propriedade ActiveWorkbook também geralmente pode ser omitida. A menos que uma pasta de trabalho específica seja nomeada, a pasta de trabalho ativa estará implícita.
Ao usar o método Application.Goto, se você quiser usar dois métodos Cells dentro do método Range quando o intervalo especificado estiver em outra planilha (não na ativa), inclua o objeto Sheets a cada vez. Por exemplo:
With ActiveWorkbook.Sheets("Sheet1")
Application.Goto .Range(.Cells(2, 3), .Cells(4, 5))
End With
Para qualquer item entre aspas (por exemplo, o intervalo nomeado "Test"), você também pode usar uma variável cujo valor é uma cadeia de caracteres de texto. Por exemplo, em vez de
ActiveWorkbook.Sheets("Sheet1").Activate
você pode usar
ActiveWorkbook.Sheets(myVar).Activate
em que o valor de myVar é "Sheet1".