Como selecionar células/intervalos através de procedimentos do Visual Basic no Excel
A Microsoft fornece exemplos de programação apenas a título informativo, sem qualquer garantia expressa ou implícita, incluindo, sem limitações, as garantias implícitas de comercialização e/ou adequação a um fim específico. Este artigo pressupõe que o utilizador está familiarizado com a linguagem de programação demonstrada e as ferramentas utilizadas para criar e depurar procedimentos. Os técnicos de suporte da Microsoft podem ajudar a explicar a funcionalidade de um determinado procedimento, mas não modificarão estes exemplos para proporcionarem funcionalidades adicionais nem criarão procedimentos adaptados às suas necessidades específicas. Os exemplos neste artigo utilizam os métodos do Visual Basic listados na seguinte tabela.
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 utilizam as propriedades na seguinte tabela.
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 Mesma
Para selecionar a célula D5 na tabela ativa, pode utilizar um dos seguintes exemplos:
ActiveSheet.Cells(5, 4).Select
-or-
ActiveSheet.Range("D5").Select
Como Selecionar uma Célula Noutra Livro no Mesmo Livro
Para selecionar a célula E6 noutra célula do mesmo livro, pode utilizar um dos seguintes exemplos:
Application.Goto ActiveWorkbook.Sheets("Sheet2").Cells(6, 5)
-or-
Application.Goto (ActiveWorkbook.Sheets("Sheet2").Range("E6"))
Em seguida, pode ativar a mesma e, em seguida, utilizar o método 1 acima para selecionar a célula:
Sheets("Sheet2").Activate
ActiveSheet.Cells(6, 5).Select
Como Selecionar uma Célula numa Livro Diferente
Para selecionar a célula F7 numa livro diferente, pode utilizar um dos seguintes exemplos:
Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Cells(7, 6)
-or-
Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("F7")
Em seguida, pode ativar a mesma e, em seguida, utilizar 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 Mesma
Para selecionar o intervalo C2:D10 na mesma, pode utilizar 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 Noutra Livro no Mesmo Livro
Para selecionar o intervalo D3:E11 noutra livro no mesmo livro, pode utilizar um dos seguintes exemplos:
Application.Goto ActiveWorkbook.Sheets("Sheet3").Range("D3:E11")
Application.Goto ActiveWorkbook.Sheets("Sheet3").Range("D3", "E11")
Em seguida, pode ativar a mesma e, em seguida, utilizar 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 numa Livro Diferente
Para selecionar o intervalo E4:F12 numa livro diferente, pode utilizar um dos seguintes exemplos:
Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("E4:F12")
Application.Goto _
Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("E4", "F12")
Em seguida, pode ativar a mesma e, em seguida, utilizar 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 com Nome na Mesma
Para selecionar o intervalo com nome "Teste" na mesma, pode utilizar um dos seguintes exemplos:
Range("Test").Select
Application.Goto "Test"
Como Selecionar um Intervalo Com Nome noutra livro no mesmo livro
Para selecionar o intervalo com nome "Teste" noutra livro no mesmo livro, pode utilizar o seguinte exemplo:
Application.Goto Sheets("Sheet1").Range("Test")
Em seguida, pode ativar a mesma e, em seguida, utilizar o método 7 acima para selecionar o intervalo com nome:
Sheets("Sheet1").Activate
Range("Test").Select
Como Selecionar um Intervalo com Nome numa Livro Diferente
Para selecionar o intervalo com nome "Teste" numa lista num livro diferente, pode utilizar o seguinte exemplo:
Application.Goto _
Workbooks("BOOK2.XLS").Sheets("Sheet2").Range("Test")
Em seguida, pode ativar a mesma e, em seguida, utilizar o método 7 acima para selecionar o intervalo com nome:
Workbooks("BOOK2.XLS").Sheets("Sheet2").Activate
Range("Test").Select
Como Selecionar uma Célula Relativa à Célula Ativa
Para selecionar uma célula que está cinco linhas abaixo e quatro colunas à esquerda da célula ativa, pode utilizar o seguinte exemplo:
ActiveCell.Offset(5, -4).Select
Para selecionar uma célula que se senta duas linhas acima e três colunas à direita da célula ativa, pode utilizar o seguinte exemplo:
ActiveCell.Offset(-2, 3).Select
Nota
Ocorrerá um erro se tentar selecionar uma célula que está "fora da mesma". O primeiro exemplo apresentado acima devolverá um erro se a célula ativa estiver nas colunas A a D, uma vez 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 (Não Ativa) Célula
Para selecionar uma célula que está cinco linhas abaixo e quatro colunas à direita da célula C7, pode utilizar um dos seguintes exemplos:
ActiveSheet.Cells(7, 3).Offset(5, 4).Select
ActiveSheet.Range("C7").Offset(5, 4).Select
Como Selecionar um Offset de Intervalo de Células a partir de um Intervalo Especificado
Para selecionar um intervalo de células com o mesmo tamanho que o intervalo com nome "Teste", mas que é deslocado quatro linhas para baixo e três colunas para a direita, pode utilizar o seguinte exemplo:
ActiveSheet.Range("Test").Offset(4, 3).Select
Se o intervalo com nome se encontrar noutra (não na lista ativa), ative essa lista primeiro e, em seguida, selecione o intervalo utilizando o seguinte exemplo:
Sheets("Sheet3").Activate
ActiveSheet.Range("Test").Offset(4, 3).Select
Como Selecionar um Intervalo Especificado e Redicionar a Seleção
Para selecionar o intervalo com nome "Base de Dados" e, em seguida, expandir a seleção em cinco linhas, pode utilizar o seguinte exemplo:
Range("Database").Select
Selection.Resize(Selection.Rows.Count + 5, _
Selection.Columns.Count).Select
Como selecionar um Intervalo Especificado, Desdoculá-lo e, em seguida, Redicioná-lo
Para selecionar um intervalo quatro linhas abaixo e três colunas à direita do intervalo com nome "Base de Dados" e incluir duas linhas e uma coluna mais do que o intervalo com nome, pode utilizar 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 com nome "Teste" e "Amostra", pode utilizar o seguinte exemplo:
Application.Union(Range("Test"), Range("Sample")).Select
Nota
que ambos os intervalos têm de estar na mesma página para que este exemplo funcione. Tenha também em atenção que o método União não funciona em folhas. Por exemplo, esta 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"))
devolve a mensagem de erro:
O método de união da turma de aplicações falhou
Como Selecionar a Interseção de Dois ou Mais Intervalos Especificados
Para selecionar a interseção dos dois intervalos com nome "Teste" e "Amostra", pode utilizar o seguinte exemplo:
Application.Intersect(Range("Test"), Range("Sample")).Select
Tenha em atenção que ambos os intervalos têm de estar na mesma página de trabalho para que este exemplo funcione.
Os exemplos 17-21 neste artigo referem-se ao seguinte conjunto de exemplo de dados. 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 numa coluna contígua, utilize o seguinte exemplo:
ActiveSheet.Range("a1").End(xlDown).Select
Quando este código é utilizado 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, utilize o seguinte exemplo:
ActiveSheet.Range("a1").End(xlDown).Offset(1,0).Select
Quando este código é utilizado com a tabela de exemplo, a célula A5 será selecionada.
Como Selecionar um Intervalo Inteiro de Células Contíguas numa Coluna
Para selecionar um intervalo de células contíguas numa coluna, utilize 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 este código é utilizado 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 numa Coluna
Para selecionar um intervalo de células não contíguo, utilize 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 este código é utilizado com a tabela de exemplo, seleciona as células A1 a A6.
Como Selecionar um Intervalo Retangular de Células
Para selecionar um intervalo retangular de células à volta de uma célula, utilize o método Região Atual. O intervalo selecionado pelo método Região Atual é uma área vinculada por qualquer combinação de linhas e colunas em branco. Segue-se um exemplo de como utilizar o método Região Atual:
ActiveSheet.Range("a1").CurrentRegion.Select
Este código irá selecionar as células A1 a C4. Outros exemplos para selecionar o mesmo intervalo de células sã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, poderá querer selecionar as células A1 a C6. Neste exemplo, o método Região Atual não irá funcionar devido à linha em branco na Linha 5. Os seguintes exemplos irão selecionar 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 Múltiplas Colunas Não Contíguas de Comprimento Variável
Para selecionar múltiplas colunas não contíguas de comprimento variável, utilize a seguinte tabela de exemplo e exemplo de macro:
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 este código é utilizado com a tabela de exemplo, as células A1:A3 e C1:C6 serão selecionadas.
Notas nos exemplos
Normalmente, a propriedade ActiveSheet pode ser omitida porque é implícita se não for nomeada uma folha específica. Por exemplo, em vez de
ActiveSheet.Range("D5").Select
pode utilizar:
Range("D5").Select
Normalmente, a propriedade ActiveWorkbook também pode ser omitida. A menos que seja dado um nome a um livro específico, o livro ativo está implícito.
Quando utiliza o método Application.Goto, se quiser utilizar dois métodos de Células no método Intervalo quando o intervalo especificado estiver noutra folha de trabalho (não ativa), tem de incluir o objeto Folhas de 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 com nome "Teste"), também pode utilizar uma variável cujo valor é uma cadeia de texto. Por exemplo, em vez de
ActiveWorkbook.Sheets("Sheet1").Activate
pode utilizar
ActiveWorkbook.Sheets(myVar).Activate
em que o valor de myVar é "Folha1".