Como usar intervalo e células no vba?
Introdução ao intervalo e células em VBA
Ao examinar uma pasta de trabalho do Excel, você verá que tudo funciona em torno das células. Uma célula e um intervalo de células são onde você armazena seus dados e então tudo começa.
Para aproveitar ao máximo o VBA, você precisa aprender como usar células e intervalos em seus códigos. Para isso, você precisa ter um conhecimento sólido dos objetos Range. Usando-o, você pode consultar células em seus códigos da seguinte maneira:
- Uma única célula.
- Uma série de células
- Uma linha ou coluna
- Uma gama tridimensional
O OBJETO RANGE faz parte da hierarquia de objetos do Excel: Aplicativo ➜ Pastas de trabalho ➜ Planilhas ➜ Intervalo e em outros lugares dentro da planilha. Então, se você escrever um código para se referir ao objeto RANGE, seria assim:
Application.Workbook(“Workbook-Name”).Worksheets(“Sheet-Name”).Range
Ao referir-se a uma célula ou intervalo de células, você pode fazer o seguinte:
- Você pode ler o valor.
- Você pode inserir um valor lá.
- E você pode fazer alterações no formato.
Para fazer todas essas coisas, você precisa aprender como se referir a uma célula ou intervalo de células e, na próxima seção deste tutorial, aprenderá como se referir a uma célula de diferentes maneiras. Para se referir a uma célula ou intervalo de células, você pode usar três métodos diferentes.
- Propriedade de praia
- Propriedade da célula
- Propriedade de deslocamento
Bem, qual deles é o melhor depende da sua necessidade, mas vale a pena aprender os três para poder escolher o que melhor se adapta a você.
Então vamos começar.
Propriedade de praia
A propriedade Range é a forma mais comum e popular de se referir a um intervalo em seus códigos VBA. Com a propriedade Range, você simplesmente se refere ao endereço da célula. Deixe-me contar a sintaxe.
expression.range(address)
Aqui a expressão é uma variável que representa um objeto VBA. Então, se você precisar se referir à célula A1, a linha de código que você precisa escrever seria:
Application.Workbook(“Book1”).Worksheets(“Sheet1”).Range(“A1”)
O código acima informa ao VBA que você está se referindo à célula A1 que está na planilha “Planilha1” e na pasta de trabalho “Livro1”.
Nota: Sempre que você inserir um endereço de célula no objeto de intervalo, certifique-se de colocá-lo entre aspas duplas. Mas aqui está algo para entender. Como você está usando VBA no Excel, não há necessidade de usar a palavra “Aplicativo”. Então o código seria:
Workbook(“Book1”).Worksheets(“Sheet1”).Range(“A1”)
E se você estiver no Livro1, poderá reduzir ainda mais o seu código:
Worksheets(“Sheet1”).Range(“A1”)
Mas, se você já estiver na planilha “Planilha1”, você pode reduzir ainda mais o seu código e só poderá usar:
Range(“A1”)
Agora, suponha que você queira se referir a um intervalo inteiro de células (ou seja, múltiplas células), você precisa escrever o código assim:
Range("A1:A5")
No código acima, você se referiu ao intervalo A1 a A5, que consiste em cinco células. Você também pode fazer referência a um intervalo nomeado usando o objeto range. Suponha que você tenha um intervalo nomeado com o nome “Desconto de vendas” para se referir a ele, você pode escrever um código como este:
Range("Sales Discount")
Se quiser se referir a um intervalo não contínuo, você precisa fazer algo assim:
Range("A1:B5,D5:G10")
E se quiser se referir a uma linha ou coluna inteira, você precisa inserir um código como o abaixo:
Range("1:1") Range("A:A")
Neste ponto, você entende claramente como se referir a uma célula e ao intervalo de células. Mas para ser o melhor com ele, você precisa aprender como usá-lo para fazer outras coisas.
Aqui temos uma lista abrangente de tutoriais que você pode usar para aprender como trabalhar com intervalos e células no VBA.
- Contar linhas usando VBA no Excel
- Fonte Excel VBA (cor, tamanho, tipo e negrito)
- Excel VBA Ocultar e mostrar uma coluna ou linha
- Aplicar bordas a uma célula usando VBA no Excel
- Encontre a última linha, coluna e célula usando VBA no Excel
- Insira uma linha usando VBA no Excel
- Mesclar células no Excel usando código VBA
- Selecione um intervalo/célula usando VBA no Excel
- SELECIONE TODAS as células em uma planilha usando código VBA
- ActiveCell em VBA no Excel
- Método de células especiais em VBA no Excel
- Propriedade UsedRange em VBA no Excel
- Ajuste automático VBA (linhas, colunas ou planilha inteira)
- VBA ClearContents (de uma célula, intervalo ou planilha inteira)
- Intervalo de cópia do VBA para outra planilha + pasta de trabalho
- VBA Insira um valor em uma célula (Definir, Obter e Alterar)
- Coluna de inserção VBA (única e múltipla)
- Intervalo denominado VBA | (Estático + Seleção + Dinâmico)
- Deslocamento de intervalo VBA
- Faixa de classificação VBA | (Decrescente, múltiplas colunas, orientação de classificação
- VBA Wrap Text (célula, intervalo e planilha inteira)
- VBA Verifique se uma célula está vazia + várias células
1. Selecione e ative uma célula
Se quiser selecionar uma célula, você pode usar intervalo. Selecione o método. Digamos que se você deseja selecionar a célula A5, tudo o que você precisa fazer é especificar o intervalo e adicionar “.Select” depois disso.
Range(“A1”).Select
Este código diz ao VBA para selecionar a célula A5 e se você quiser selecionar um intervalo de células, basta consultar esse intervalo e simplesmente adicionar “.Select” depois disso.
Range(“A1:A5”).Select
Há também outro método que você pode usar para ativar uma célula.
Range(“A1”).Activate
Aqui você precisa lembrar que só pode ativar uma célula por vez. Mesmo se você especificar um intervalo com o método “.Activate ” , ele selecionará esse intervalo, mas a célula ativa será a primeira célula do intervalo.
2. Insira um valor em uma célula
Usando a propriedade range, você pode inserir um valor em uma célula ou intervalo de células. Vamos entender como funciona usando um exemplo simples:
Range("A1").Value = "Exceladvisor"
No exemplo acima, você especificou A1 como o intervalo e depois adicionou ” .Value “, que informa ao VBA para acessar a propriedade value da célula.
A próxima coisa que você tem é o sinal de igual e depois o valor que deseja inserir (você deve usar aspas duplas se inserir um valor de texto). Para um número, o código seria assim:
Range("A1").Value = 9988
E se você quiser inserir um valor em um intervalo de células, quero dizer, várias células, tudo o que você precisa fazer é especificar esse intervalo.
Range("A1:A5").Value = "Exceladvisor"
E aqui está o código se você estiver se referindo ao intervalo não contínuo.
Range("A1:A5 , E2:E3").Value = "Exceladvisor"
3. Copie e cole uma célula/intervalo
Com a propriedade Range, você pode usar o método “.Copy” para copiar uma célula e colá-la em uma célula de destino. Digamos que você precise copiar a célula A5, o código correspondente seria:
Range("A5").Copy
Quando você executa esse código, ele apenas copia a célula A5, mas a próxima etapa é colar essa célula copiada em uma célula de destino. Para fazer isso, você deve adicionar a palavra-chave de destino depois dela e seguida da célula onde deseja colá-la. Então, se você quisesse copiar a célula A1 e depois colá-la na célula E5, o código seria:
Range("A1").Copy Destination:=Range("E5")
Da mesma forma, se você estiver lidando com um intervalo de múltiplas células, o código ficaria assim:
Range("A1:A5").Copy Destination:=Range("E5:E9")
Se você copiou um intervalo de células e depois mencionou uma célula como intervalo de destino, o VBA copiará todo o intervalo copiado da célula especificada como destino.
Range("A1:A5").Copy Destination:=Range("B1")
Quando você executa o código acima, o VBA copia o intervalo A1:A5 e cola-o em B1:B5, mesmo que você tenha mencionado apenas B1 como o intervalo de destino.
Dica: Assim como o método “.Copy”, você pode usar o método “.Cut” para cortar uma célula e, em seguida, simplesmente usar um destino para colá-la.
4. Use a propriedade Font com a propriedade Range
Com a propriedade range, você pode acessar a propriedade font de uma célula que ajuda a alterar todas as configurações de fonte. Há um total de 18 propriedades diferentes para a fonte que você pode acessar. Digamos que você queira deixar o texto em negrito na célula A1, o código seria:
Range("A1").Font.Bold = True
Este código diz ao VBA para acessar a propriedade BOLD da fonte que está no intervalo A1 e você definiu esta propriedade como TRUE. Agora digamos que você queira aplicar tachado na célula A1, esse timecode seria:
Como eu disse, há um total de 18 propriedades diferentes que você pode usar, então não deixe de conferir todas para ver qual delas é útil para você.
5. Limpe a formatação de uma célula
Usando o método “.ClearFormats”, você pode limpar apenas o formato de uma célula ou intervalo de células. Tudo que você precisa fazer é adicionar “.ClearFormat” após especificar o intervalo, como abaixo:
Range("A1").ClearFormats
Ao executar o código acima, ele limpa toda a formatação da célula A1 e se quiser fazer isso para um intervalo inteiro, você sabe o que fazer, certo?
Range("A1:A5").ClearFormats
Agora o código acima irá simplesmente remover a formatação do intervalo A1 a A5.
Propriedade da célula
Além da propriedade RANGE, você pode usar a propriedade “Células” para se referir a uma célula ou intervalo de células em sua planilha. Na propriedade da célula, em vez de usar a referência da célula, você precisa inserir o número da coluna e o número da linha da célula.
expression.Cells(Row_Number, Column_Number)
Aqui a expressão é um objeto VBA e Row_Number é o número da linha da célula e Column_Number é a coluna da célula. Portanto, se quiser se referir à célula A5, você pode usar o código abaixo:
Cells(5,1)
Agora, este código diz ao VBA para se referir à célula que está na linha cinco e na coluna um. Como sua sintaxe sugere, você deve inserir o número da coluna como endereço, mas a realidade é que você também pode usar o alfabeto da coluna, se desejar, apenas colocando-o entre aspas duplas.
O código abaixo também se referirá à célula A5:
Cells(5,"A")
E no VBA para selecioná-lo, basta adicionar “.Select” no final.
Cells(5,1).Select
O código acima selecionará a célula A5 que está na 5ª linha e na primeira coluna da planilha.
Propriedade OFFSET
Se quiser jogar bem com intervalos em VBA, você precisa saber como usar a propriedade OFFSET. É útil referir-se a uma célula que está a um certo número de linhas e colunas de outra célula.
Suponha que sua célula ativa seja B5 agora e você queira navegar até a célula que está 3 colunas à direita e 1 linha abaixo de B5, você pode fazer este SHIFT. Abaixo está a sintaxe que você deve usar para OFFSET:
expression.Offset (RowOffset, ColumnOffset)
- RowOffset: Neste argumento, você precisa especificar um número que informará ao VBA quantas linhas você deseja percorrer. Um número positivo define uma linha descendente e um número negativo define uma linha ascendente.
- ColumnOffset : Neste argumento, você precisa especificar um número que informará ao VBA quantas colunas você deseja navegar. Um número positivo define uma coluna da direita e um número negativo define uma coluna da esquerda.
Vamos escrever um código simples, por exemplo, que discutimos acima.
- Primeiramente você precisa definir o intervalo a partir do qual deseja navegar e assim digitar o código abaixo:
- Depois disso, digite “.Offset” e insira parênteses de abertura, como abaixo:
- Em seguida, você precisa inserir o número da linha e depois o número da coluna onde deseja navegar.
- No final você precisa adicionar “.Select” para dizer ao VBA para selecionar a célula para a qual deseja navegar.
Portanto, quando você executa esse código, ele seleciona a célula que está uma linha abaixo e 3 colunas à direita da célula B5.
Redimensione um intervalo usando OFFSET
OFFSET não apenas permite navegar até uma célula, mas também redimensionar ainda mais o intervalo. Vamos continuar com o exemplo acima.
Range("B5").Offset(1, 3).Select
O código acima direciona você para a célula E6 e agora digamos que você precise selecionar o intervalo de células que consiste nas cinco colunas e três linhas de E6. Então o que você precisa fazer é depois de usar OFFSET, usar a propriedade de redimensionamento adicionando “.Resize”.
Range("B5").Offset(1, 3).Resize
Agora você precisa inserir o tamanho da linha e o tamanho da coluna. Digite um parêntese inicial e insira o número para definir o tamanho da linha e, em seguida, um número para definir o tamanho da coluna.
Range("B5").Offset(1, 3).Resize(3,5)
No final, adicione “.Select” para dizer ao VBA para selecionar o intervalo e, quando você executar este código, ele selecionará o intervalo.
Range("B5").Offset(1, 3).Resize(3, 5).Select
Portanto, quando você executar este código, ele selecionará o intervalo E6 a I8.
Range("A1").Font.Strikethrough = True