VBA Range


VBA Cells

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
Exemplo Cells

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.


VBA Range

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
Exemplo Cells

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.


VBA Range Object

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"
Exemplo Range

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
Copiar Range

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.


Set 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:


VBA Range Cells

É possível acessar células dentro de um Range usando Cells.

Exemplo Range
    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)).


Worksheets Range

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"
Planilhas Range

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.


WorkBook Range

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.



Fixando o Aprendizado

Exercícios Sugeridos

Loop Com Espaço Média Harmônica Pintar Alternado Par ou Impar Letra Maiúscula Contar Primos


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

Protected by Copyscape