Como seleccionar células/intervalos utilizando procedimento Visual Basic no Excel

Mais Informação

A Microsoft fornece exemplos de programação apenas a título informativo, sem garantia expressa ou implícita, incluindo, sem limitação, as garantias implícitas de comercialização e/ou adequação a um fim específico. Este artigo pressupõe que o utilizador conhece a linguagem de programação apresentada 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 necessidades específicas do utilizador. Os exemplos neste artigo utilizam os métodos do Visual Basic listados na seguinte tabela.

Método Argumentos
------------------------------------------
Activate nenhum
Cells rowIndex, columnIndex
Application.Goto reference, scroll
Offset rowOffset, columnOffset
Range cell1
cell1, cell2
Resize rowSize, columnSize
Select nenhum
Sheets index (ou sheetName)
Workbooks index (ou bookName)
End direction
CurrentRegion nenhum
Os exemplos deste artigo utilizam as propriedades na seguinte tabela. <Formatting Type="FixedText"><![CDATA[
Propriedade Utilização
---------------------------------------------------------------------
ActiveSheet para especificar a folha activa
ActiveWorkbook para especificar o livro activo
Columns.Count para contar o número de colunas no item especificado
Rows.Count para contar o número de linhas no item especificado
Selection para referenciar o intervalo actualmente seleccionado

1: Como seleccionar uma célula na Folha de cálculos activa

Para seleccionar a célula D5 na folha de cálculos activa, pode utilizar qualquer um dos exemplos seguintes:
ActiveSheet.Cells(5, 4).Select
- ou -
ActiveSheet.Range("D5").Select

2: Como seleccionar uma célula noutra folha de cálculo no mesmo livro

Para seleccionar a célula E6 noutra folha de cálculos no mesmo livro, pode utilizar qualquer um dos exemplos seguintes:
Application.Goto ActiveWorkbook.Sheets("Sheet2").Cells(6, 5)

- ou -
Application.Goto (ActiveWorkbook.Sheets("Sheet2").Range("E6"))
Em alternativa, pode activar a folha de cálculo e utilizar o método 1 acima para seleccionar a célula:
Sheets("Sheet2").Activate
ActiveSheet.Cells(6, 5).Select

3: Como seleccionar uma célula numa folha de cálculo num livro diferente

Para seleccionar a célula F7 numa folha de cálculos num livro diferente, pode utilizar qualquer um dos exemplos seguintes:
Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Cells(7, 6)
- ou -
Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("F7")
Em alternativa, pode activar a folha de cálculo e utilizar o método 1 acima para seleccionar a célula:
Workbooks("BOOK2.XLS").Sheets("Sheet1").Activate
ActiveSheet.Cells(7, 6).Select

4: Como seleccionar um intervalo de células na folha de cálculos activa

Para seleccionar o intervalo C2:D10 na folha de cálculos activa, pode utilizar qualquer um dos exemplos seguintes:
ActiveSheet.Range(Cells(2, 3), Cells(10, 4)).Select
ActiveSheet.Range("C2:D10").Select
ActiveSheet.Range("C2", "D10").Select

5: Como seleccionar um intervalo de células noutra folha de cálculo no mesmo livro

Para seleccionar o intervalo D3:E11 noutra folha de cálculos no mesmo livro, pode utilizar qualquer um dos exemplos seguintes:
Application.Goto ActiveWorkbook.Sheets("Sheet3").Range("D3:E11")
Application.Goto ActiveWorkbook.Sheets("Sheet3").Range("D3", "E11")
Em alternativa, pode activar a folha de cálculo e utilizar o método 4 acima para seleccionar o intervalo:
Sheets("Sheet3").Activate
ActiveSheet.Range(Cells(3, 4), Cells(11, 5)).Select

6: Como seleccionar um intervalo de células numa folha de cálculo num livro diferente

Para seleccionar o intervalo E4:F12 numa folha de cálculos num livro diferente, pode utilizar qualquer um dos exemplos seguintes:
Application.Goto Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("E4:F12")
Application.Goto _
Workbooks("BOOK2.XLS").Sheets("Sheet1").Range("E4", "F12")
Em alternativa, pode activar a folha de cálculo e utilizar o método 4 acima para seleccionar o intervalo:
Workbooks("BOOK2.XLS").Sheets("Sheet1").Activate
ActiveSheet.Range(Cells(4, 5), Cells(12, 6)).Select

7: Como seleccionar um intervalo com nome na folha de cálculos activa

Para seleccionar o intervalo com nome "Test" na folha de cálculos activa, pode utilizar qualquer um dos exemplos seguintes:
Range("Test").Select
Application.Goto "Test"

8: Como seleccionar um intervalo com nome noutra folha de cálculo no mesmo livro

Para seleccionar o intervalo com nome "Test" noutra folha de cálculos no mesmo livro, pode utilizar qualquer um dos exemplos seguintes:
Application.Goto Sheets("Sheet1").Range("Test")
Em alternativa, pode activar a folha de cálculo e utilizar o método 7 acima para seleccionar o intervalo com nome:
Sheets("Sheet1").Activate
Range("Test").Select

9: Como seleccionar um intervalo com nome numa folha de cálculo num livro diferente

Para seleccionar o intervalo com nome "Test" numa folha de cálculos num livro diferente, pode utilizar qualquer um dos exemplos seguintes:
Application.Goto _
Workbooks("BOOK2.XLS").Sheets("Sheet2").Range("Test")
Em alternativa, pode activar a folha de cálculo e utilizar o método 7 acima para seleccionar o intervalo com nome:
Workbooks("BOOK2.XLS").Sheets("Sheet2").Activate
Range("Test").Select

10: Como seleccionar uma célula relativa à célula activa

Para seleccionar uma célula cinco linhas abaixo e quatro colunas à esquerda da célula activa, pode utilizar o exemplo seguinte:
ActiveCell.Offset(5, -4).Select
Para seleccionar uma célula que esteja duas linhas acima e três colunas à direita da célula activa, poderá utilizar o seguinte exemplo:
ActiveCell.Offset(-2, 3).Select
Nota Se tentar seleccionar uma célula que esteja "fora da folha de cálculo", irá obter um erro. O primeiro exemplo mostrado acima irá devolver um erro se a célula activa estiver nas colunas A a D, uma vez que a deslocação de quatro colunas para a esquerda colocaria a célula activa num endereço de célula inválido.

11: Como seleccionar uma célula relativa a outra célula activa (não a activa)

Para seleccionar uma célula cinco linhas abaixo e quatro colunas à direita da célula C7, pode utilizar qualquer um dos exemplos seguintes:
ActiveSheet.Cells(7, 3).Offset(5, 4).Select
ActiveSheet.Range("C7").Offset(5, 4).Select

12: Como seleccionar um intervalo de células deslocado a partir de um intervalo especificado

Para seleccionar um intervalo de células que tenha o mesmo tamanho que o intervalo com nome "Test" mas que esteja deslocado quatro linhas para baixo e três colunas para a direita, poderá utilizar o seguinte exemplo:
ActiveSheet.Range("Test").Offset(4, 3).Select
Se o intervalo com nome estiver noutra folha de cálculo (que não a activa), active essa folha de cálculo primeiro e seleccione o intervalo utilizando o seguinte exemplo:
Sheets("Sheet3").Activate
ActiveSheet.Range("Test").Offset(4, 3).Select

13: Como seleccionar um intervalo específico e redimensionar a selecção

Para seleccionar o intervalo com nome "Database" e de seguida alargar a selecção em cinco linhas, pode utilizar o exemplo seguinte:
Range("Database").Select
Selection.Resize(Selection.Rows.Count + 5, _
Selection.Columns.Count).Select

14: Como seleccionar um intervalo específico, deslocá-lo e de seguida redimensioná-lo

Para seleccionar um intervalo quatro linhas abaixo e três colunas à direita do intervalo com nome "Database" e incluir duas linhas e uma coluna a mais que o intervalo com nome, poderá utilizar o seguinte exemplo:
Range("Database").Select
Selection.Offset(4, 3).Resize(Selection.Rows.Count + 2, _
Selection.Columns.Count + 1).Select

15: Como seleccionar a união de dois ou mais intervalos especificados

Para seleccionar a união (ou seja, a área combinada) dos dois intervalos com nome "Test" e "Sample", poderá utilizar o seguinte exemplo:
Application.Union(Range("Test"), Range("Sample")).Select
Tenha em atenção que ambos os intervalos têm de estar na mesma folha de cálculo para que este exemplo funcione. Tenha também em atenção que o método Union não funciona entre folhas. Por exemplo, a linha seguinte funciona
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:
Union method of application class failed (Falha no método Union da classe de aplicação)

16: Como seleccionar a intersecção de dois ou mais intervalos especificados

Para seleccionar a intersecção dos dois intervalos com nome "Test" e "Sample", poderá 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 folha de cálculo para que este exemplo funcione.



Os exemplos 17 a 21 neste artigo referem-se ao seguinte conjunto de exemplos de dados. Cada exemplo indica o intervalo de células nos exemplos de dados que seriam seleccionados.

A1: Nome B1: Vendas C1: Quantidade
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

17: Como seleccionar a última célula de uma coluna de dados contíguos

Para seleccionar a última célula numa coluna contígua, utilize o exemplo seguinte:
ActiveSheet.Range("a1").End(xlDown).Select
Quando este código for utilizado com a tabela de exemplo, a célula A4 será seleccionada.


18: Como seleccionar a célula em branco no fundo de uma coluna de dados contíguos

Para seleccionar a célula abaixo de um intervalo de células contíguas, utilize o exemplo seguinte:
ActiveSheet.Range("a1").End(xlDown).Offset(1,0).Select
Quando este código for utilizado com a tabela de exemplo, a célula A5 será seleccionada.


19: Como seleccionar um intervalo completo de células contíguas numa coluna

Para seleccionar um intervalo de células contíguas numa coluna, utilize um dos exemplos seguintes:
ActiveSheet.Range("a1", ActiveSheet.Range("a1").End(xlDown)).Select

- ou -
ActiveSheet.Range("a1:" & ActiveSheet.Range("a1"). _
End(xlDown).Address).Select
Quando este código for utilizado com a tabela de exemplo, as células A1 a A4 serão seleccionadas.

20: Como seleccionar um intervalo completo de células não contíguas numa coluna

Para seleccionar um intervalo de células não contíguas, utilize um dos exemplos seguintes:
ActiveSheet.Range("a1",ActiveSheet.Range("a65536").End(xlUp)).Select

- ou -
ActiveSheet.Range("a1:" & ActiveSheet.Range("a65536"). _
End(xlUp).Address).Select
Quando este código for utilizado com a tabela de exemplo, seleccionará as células A1 a A6.

21: Como seleccionar um intervalo de células rectangular

De modo a seleccionar um intervalo rectangular de células à volta de uma célula, utilize o método CurrentRegion. O intervalo seleccionado pelo método CurrentRegion é uma área delimitada por qualquer combinação de linhas em branco e colunas em branco. Segue-se um exemplo de como utilizar o método CurrentRegion:
ActiveSheet.Range("a1").CurrentRegion.Select
Este código seleccionará as células A1 a C4. Encontra listados abaixo outros exemplos de como seleccionar o mesmo intervalo de células:
ActiveSheet.Range("a1", _
ActiveSheet.Range("a1").End(xlDown).End(xlToRight)).Select

- ou -
ActiveSheet.Range("a1:" & _
ActiveSheet.Range("a1").End(xlDown).End(xlToRight).Address).Select
Em alguns casos, poderá pretender seleccionar as células A1 a C6. Neste exemplo, o método CurrentRegion não irá funcionar devido à linha em branco na Linha 5. Os seguintes exemplos irão seleccionar todas as células:
lastCol = ActiveSheet.Range("a1").End(xlToRight).Column
lastRow = ActiveSheet.Cells(65536, lastCol).End(xlUp).Row
ActiveSheet.Range("a1", ActiveSheet.Cells(lastRow, lastCol)).Select

- ou -
lastCol = ActiveSheet.Range("a1").End(xlToRight).Column
lastRow = ActiveSheet.Cells(65536, lastCol).End(xlUp).Row
ActiveSheet.Range("a1:" & _
ActiveSheet.Cells(lastRow, lastCol).Address).Select

22. Como seleccionar múltiplas colunas não contíguas de comprimento variável

Para seleccionar múltiplas colunas não contíguas de comprimento variável, utilize a seguinte tabela e macro de exemplo:

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 for utilizado com a tabela de exemplo, as células A1:A3 e C1:C6 serão seleccionadas.

NOTAS SOBRE OS EXEMPLOS

  • Normalmente, a propriedade ActiveSheet pode ser omitida, uma vez que se considera implícita sempre que uma folha específica não tiver nome. Por exemplo, em vez de
    ActiveSheet.Range("D5").Select
    poderá utilizar:
    Range("D5").Select
  • Normalmente, a propriedade ActiveWorkbook também pode ser omitida. A não ser que um livro específico tenha nome, o livro activo será considerado implícito.
  • Quando utilizar o método Application.Goto, se pretender utilizar dois métodos Cells dentro do método Range quando o intervalo especificado estiver noutra folha de cálculo (que não a activa), terá de incluir sempre o objecto Sheets. Por exemplo:
    Application.Goto Sheets("Sheet1").Range( _
    Sheets("Sheet1").Range(Sheets("Sheet1").Cells(2, 3), _
    Sheets("Sheet1").Cells(4, 5)))
  • Para qualquer item que esteja entre aspas (por exemplo, o intervalo com nome "Test"), também poderá utilizar uma variável cujo valor seja uma cadeia de texto. Por exemplo, em vez de
    ActiveWorkbook.Sheets("Sheet1").Activate
    poderá utilizar
    ActiveWorkbook.Sheets(myVar).Activate
    Em que o valor de myVar é "Sheet1".

Referências


Para mais informações sobre como utilizar o código de exemplo contido neste artigo, clique no número de artigo que se segue para visualizar o artigo na Base de Dados de Conhecimento Microsoft:

290140 Como executar o exemplo de código para programas do Office XP a partir de artigos da Base de Dados de Conhecimento

Propriedades

ID do Artigo: 291308 - Última Revisão: 09/03/2014 - Revisão: 1

Microsoft Office Excel 2003, Microsoft Office Excel 2007, Microsoft Excel 2010

Comentários