O comando Cells permite a interação do VBA com células da planilha.
'Cells([linha],[coluna])
Cells(1,1) = 10
Cells(2,1) = 20
Cells(3,1) = 30
Assim como inserir valores, podemos também ler valores:
VarCelula = Cells(1,1)
MsgBox VarCelula
Também podemos realizar operações, da mesma forma que pode ser feito com variáveis:
Cells(1,3) = Cells(1,1) + Cells(2,1)
Note que o resultado final do exemplo acima estará disponível na célula "C1" da planilha ativa.
Range é um comando para representar intervalos, contendo uma ou mais células.
Para se estabelecer o intervalo do Range é necessário estabelecer uma célula de início e uma de fim.
Isto pode ser feito através da utilização de Cells:
'Range([celula de início],[célula de fim])
Range(Cells(1,1),Cells(2,3)) = 7
Também é possível estabelecer o intervalo do Range a partir de uma notação String.
Range("A1:C2") = 10
Nesta notação, cada célula é representado por uma letra, referindo-se à coluna, e um número, referindo-se a linha (E.g. "A1"). Estabelecemos com dois ponto : a separação entre a célula de início e a de fim.
Podemos realizar outras ações mais complexas com Range:
Range("A1:B1").Merge 'Mescla as células "A1" e "B1"
Range("A1").Value ="Estoque" 'Insere um texto em "A1"
Range("A2").Formula = "=10-5" 'Insere uma fórmula em "A2"
Tudo que vem após o ponto (.) depois do comando Range é um Método ou uma Propriedade.
Ao longo desse tutorial serão descritos os Métodos e Propriedades do VBA mais úteis para o dia-a-dia corporativo.
Ao mesmo tempo, tudo que aceita um Método ou uma Propriedade é um Objeto.
Portanto, podemos acessar do objeto Range a Propriedade .Value, por exemplo, para copiar valores de um intervalo para outro:
Range("C1:D3").Value = Range("A1:B3").Value
Objetos, Métodos e Propriedades são conceitos amplos e presentes em outras linguagens de programação. O estudo neste site terá como foco a utilização prática em VBA.
Os Objetos em VBA somente são associados a variáveis antecedidos da instrução Set.
Set Rng = Range("B2:B7")
Rng.Value = 0 '"B2" até "B7" receberá o valor 0
Para objetos existe o tipo de dado Object.
Vantagens de associar um Range a uma variável com Set:
É possível acessar células dentro de um Range usando Cells.
MsgBox Range("B2:C7").Cells(3,2) 'Exibirá o valor da célula "C4"
Cells é uma propriedade de Range.
A referência do Cells terá como base o intervalo do Range (no caso "B2" seria equivalente a Cells(1,1)).
O intervalo de células Range sempre será referente a uma planilha. Para especificá-la utiliza-se o comando Worksheets. Caso não ocorra a especificação, será referente à planilha ativa (ActiveSheet).
Worksheets("Planilha1").Range("A1") 'Referencia a planilha não ativa chamada "Planilha1"
Range("A1") 'Referencia-se a planilha ativa "SuperExcelVBA"
Neste exemplo, Range é uma propriedade de Worksheets.
Podemos especificar a planilha ativa com método .Activate.
Worksheets("Planilha1").Activate 'Planilha1 passará a ser a planilha ativa
É interessante especificar a planilha sempre que existir mais de uma no mesmo arquivo.
É possível referenciar explicitamente a planilha ativa utilizando a expressão ActiveSheet.
Range("A1") = "Planilha ativa"
ActiveSheet.Range("A1") = "Planilha ativa" 'Mesmo resultado que a linha de cima
MsgBox ActiveSheet.Name 'Retorna o nome da planilha ativa
Também é possível indicar a planilha conforme sua posição no arquivo:
Worksheets(1).Range("A1") 'Se refere a primeira planilha na ordem que aparece no Excel ("Planilha 1")
Worksheets(2).Range("A1") 'Se refere a segunda planilha na ordem que aparece no Excel ("SuperExcelVBA")
Sendo assim, podemos referir a uma mesma planilha destas duas formas:
Worksheets("Planilha1").Range("A1")
Worksheets(1).Range("A1")
Note que da primeira forma será preciso mudanças no código caso haja uma alteração do nome da planilha. Já na segundo forma, a alteração será necessária caso a planilha seja trocada de posição.
Da mesma forma que o intervalo, Range sempre se refere a uma planilha (Worksheet), e a planilha, por sua vez, sempre se refere a um Workbook (arquivo Excel).
Embora comumente trabalha-se apenas com uma pasta de trabalho aberta, referenciar o Workbook é uma boa prática caso exista uma interação com outros arquivos.
WorkBooks("Exemplo.xlsm").Worksheets("Planilha1").Range("A1")
WorkBooks("Tutorial.xlsm").Worksheets("SuperExcelVBA").Range("A1")
O Worksheets do exemplo é uma propriedade de WorkBooks.
É preciso especificar tanto o nome do arquivo quanto a extensão dele (E.g. .xlsm ) quando for utilizar WorkBooks.
Exercícios Sugeridos
SuperExcelVBA.com é um site voltado ao aprendizado de VBA. Exemplos e explicações podem ter sido simplificados para maior e mais veloz compreensão. Estamos constantemente nos atualizando e corrigindo erros, porém não existe garantia sobre o conteúdo disponível no site. Todos os direitos reservados.
Excel ® é uma marca registrada da Microsoft Corporation.
© 2024 SuperExcelVBA | SOBRE