NUNCA MAIS PASSE RAIVA POR NÃO CONSEGUIR RESOLVER UM PROBLEMA COM O EXCEL - GARANTIDO!

UNIVERSIDADE DO VBA - Domine o VBA no Excel Criando Sistemas Completos - Passo a Passo - CLIQUE AQUI

Quer Receber Novidades e E-books Gratuitos de Excel? * Junte-se a mais de 103.000 pessoas!

Curso Grátis de Excel Avançado - Módulo 6 - Lição: Worksheet e Range - Propriedades e Métodos - Parte 3

120 Lições | Gratuito Online | Autor: Júlio Battisti


Vamos ver mais alguns exemplos de trabalho com células e faixas de células.

Loop através de um intervalo de células:

Ao usar o VBA, você freqüentemente precisa executar o mesmo bloco de instruções em cada célula de um intervalo de células. Para fazer isso, você combina uma instrução de loop com um ou mais métodos para identificar cada célula, uma de cada vez, e executa a operação.

Uma maneira de fazer loop através de um intervalo é usar o loop For...Next (descrito no Módulo 5) com a propriedade Cells. Usando a propriedade Cells, você pode substituir o contador do loop (ou outras variáveis ou expressões) pelos números de índice das células. No exemplo seguinte, a variável counter é substituída pelo índice de linha. O seguinte exemplo faz um loop através de um intervalo C1:C20, definindo como 0 (zero) qualquer número cujo valor absoluto seja menor que 0,01.

For counter = 1 To 20
   Set curCell = Worksheets("Sheet1").Cells(counter, 3)
   If Abs(curCell.Value) < 0.01 Then curCell.Value = 0
Next counter

Uma outra maneira mais fácil de se fazer um loop através de um intervalo é usar um loop For Each...Next (descrito no Módulo 5) com a coleção de células retornada pelo método Range. O VBA define automaticamente uma variável de objeto para a próxima célula cada vez que o loop é executado. O seguinte exemplo faz um loop através do intervalo A1:D10, definindo como 0 (zero) qualquer número cujo valor absoluto seja menor que 0,01.

For Each c In Worksheets("Sheet1").Range("A1:D10").Cells
   If Abs(c.Value) < 0.01 Then c.Value = 0
Next

Se você não souber os limites do intervalo pelo qual deseja fazer o loop, você pode usar a propriedade CurrentRegion para retornar o intervalo que envolve a célula ativa. Por exemplo, o exemplo seguinte, quando executado de uma planilha, faz um loop através do intervalo que envolve a célula ativa, definindo como 0 (zero) qualquer número cujo valor absoluto seja menor que 0,01.

For Each c In ActiveCell.CurrentRegion.Cells
   If Abs(c.Value) < 0.01 Then c.Value = 0
Next

Selecionar e ativar células:

Quando você trabalha com o Microsoft Excel, você geralmente seleciona uma célula ou células e, em seguida, efetua uma ação, como formatar as células ou inserir valores nelas. No VBA, normalmente não é necessário selecionar células antes de modificá-las.

Por exemplo, se você desejar inserir uma fórmula na célula D6 usando o Visual Basic, você não terá que selecionar o intervalo D6. Você precisa apenas retornar o objeto Range e, em seguida, definir a propriedade Formula com a fórmula desejada, conforme mostrado no exemplo seguinte.

Worksheets("Sheet1").Range("D6").Formula = "=SUM(D2:D5)"

Usar o método Select e a propriedade Selection:

O método Select ativa planilhas e objetos em planilhas; a propriedade Selection retorna um objeto representando a seleção atual na planilha ativa da pasta de trabalho ativa. Antes de você poder usar com êxito a propriedade Selection, você precisa ativar uma pasta de trabalho, ativar ou selecionar uma planilha e, em seguida, selecionar um intervalo (ou outro objeto) usando o método Select.

O gravador de macro costuma criar macros que usam o método Select e a propriedade Selection. O exemplo seguinte foi criado pelo uso do gravador de macro, e ilustra como Select e Selection funcionam juntas.

Sheets("Sheet1").Select
Range("A1").Select
ActiveCell.FormulaR1C1 = "Name"
Range("B1").Select
ActiveCell.FormulaR1C1 = "Address"
Range("A1:B1").Select
Selection.Font.Bold = True

O exemplo seguinte realiza a mesma tarefa sem ativar nem selecionar a planilha ou as células.

Worksheets("Sheet1").Range("A1") = "Name"
Worksheets("Sheet1").Range("B1") = "Address"
Worksheets("Sheet1").Range("A1:B1").Font.Bold = True

Selecionar células na planilha ativa:

Se você usa o método Select para selecionar células, esteja ciente de que Select só funciona na planilha ativa. Se você executar o seu procedimento Sub a partir do módulo, o método Select falhará a menos que o seu procedimento ative a planilha antes de usar o método Select em um intervalo de células. Por exemplo, o exemplo seguinte copia uma linha de Sheet1 para Sheet2 na pasta de trabalho ativa.

Worksheets("Sheet1").Rows(1).Copy
Worksheets("Sheet2").Select
Worksheets("Sheet2").Rows(1).Select
Worksheets("Sheet2").Paste

Ativar uma célula dentro de uma seleção:

Você pode usar o método Activate para ativar uma célula dentro de uma seleção. Só pode haver uma célula ativa, mesmo quando um intervalo de células é selecionado. O exemplo seguinte seleciona um intervalo e, em seguida, ativa uma célula dentro do intervalo sem alterar a seleção.

Worksheets("Sheet1").Activate
Range("A1:D4").Select
Range("B2").Activate

Trabalhar com a célula ativa:

A propriedade ActiveCell retorna um objeto Range representando a célula que está ativa. Você pode aplicar qualquer das propriedades ou métodos de um objeto Range à célula ativa, como no exemplo seguinte.

Worksheets("Sheet1").Activate
ActiveCell.Value = 35

Observação: Você só pode trabalhar com a célula ativa quando a planilha na qual ela se encontra é a planilha ativa.

Mover a célula ativa:

Você pode usar o método Activate para designar qual célula é a célula ativa. Por exemplo, o exemplo seguinte torna B5 a célula ativa e, em seguida, a formata com negrito.

Worksheets("Sheet1").Activate
Worksheets("Sheet1").Range("B5").Activate
ActiveCell.Font.Bold = True

Observação: Para selecionar um intervalo de células, use o método Select. Para tornar uma única célula a célula ativa, use o método Activate.

Você pode usar a propriedade Offset para mover a célula ativa. O exemplo seguinte insere texto na célula ativa do intervalo selecionado e, em seguida, move a célula ativa uma célula para a direita sem alterar a seleção.

Worksheets("Sheet1").Activate
Range("A1:D10").Select
ActiveCell.Value = "Monthly Totals"
ActiveCell.Offset(0, 1).Activate

Selecionar as células ao redor da célula ativa:

A propriedade CurrentRegion retorna um intervalo de células delimitado por linhas e colunas em branco. No exemplo seguinte, a seleção é expandida para incluir as células adjacentes à célula ativa, que contenham dados. Em seguida, esse intervalo é formatado com o formato Currency.

Worksheets("Sheet1").Activate
ActiveCell.CurrentRegion.Select
Selection.Style = "Currency"

[LIVRO]: MACROS E PROGRAMAÇÃO VBA NO EXCEL 2010 - PASSO-A-PASSO

APRENDA COM JULIO BATTISTI - 1124 PÁGINAS: CLIQUE AQUI