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"
Todos
os direitos reservados: ® Júlio Battisti, 2002