Objeto de intervalo VBA do Excel

โšก Resumo Inteligente

O objeto Range do VBA do Excel representa uma cรฉlula ou um grupo de cรฉlulas em uma planilha. Esta pรกgina explica a hierarquia de objetos, as propriedades Range e Cells, a seleรงรฃo e a referรชncia a cรฉlulas, a leitura e a gravaรงรฃo de valores e a propriedade Offset.

  • ๐ŸŽฏ Definiรงรฃo: O objeto Range aponta para uma รบnica cรฉlula, uma linha, uma coluna, uma seleรงรฃo ou um intervalo tridimensional.
  • ๐Ÿงฌ Hierarquia: Uma referรชncia completa e qualificada inclui: Aplicativo, Cadernos de Exercรญcios, Planilhas e, por fim, Intervalo.
  • ๐Ÿท๏ธ Propriedades e mรฉtodos: Uma propriedade armazena informaรงรตes sobre o objeto, e um mรฉtodo executa uma aรงรฃo como Selecionar ou Mesclar.
  • ๐Ÿ”ข Propriedade das cรฉlulas: Cells(Row, Column) referencie uma cรฉlula por nรบmero, o que รฉ adequado para um loop de programaรงรฃo.
  • โœ๏ธ Leitura e escrita: A propriedade Value recupera o conteรบdo de uma cรฉlula e tambรฉm grava novos conteรบdos.
  • โ†”๏ธ Propriedade de deslocamento: O comando Offset move uma referรชncia um nรบmero definido de linhas e colunas a partir de sua cรฉlula inicial.

Objeto de intervalo VBA do Excel

O que รฉ intervalo VBA?

O objeto de intervalo VBA representa uma cรฉlula ou vรกrias cรฉlulas em sua planilha do Excel. ร‰ o objeto mais importante do Excel VBA. Ao usar o objeto de intervalo Excel VBA, vocรช pode consultar,

  • Uma รบnica cรฉlula
  • Uma linha ou coluna de cรฉlulas
  • Uma seleรงรฃo de cรฉlulas
  • Uma gama 3D

Como discutimos em nosso tutorial anterior, o VBA รฉ usado para gravar e executar um MacroMas como o VBA identifica quais dados na planilha precisam ser processados? ร‰ aรญ que os objetos Range do VBA sรฃo รบteis.

Introduรงรฃo ร  referรชncia de objetos em VBA

Fazendo referรชncia ao objeto de intervalo VBA do Excel e ao qualificador de objeto.

  • Qualificador de objeto: Isso รฉ usado para referenciar o objeto. Ele especifica a pasta de trabalho ou planilha ร  qual vocรช estรก se referindo.

Para manipular esses valores de cรฉlulas, Propriedades e O Propรณsito sรฃo usados.

  • Propriedade: Uma propriedade armazena informaรงรตes sobre o objeto.
  • Mรฉtodo: Um mรฉtodo รฉ uma aรงรฃo do objeto que ele executarรก. O objeto Range pode executar aรงรตes como selecionar, copiar, limpar, classificar, etc.

O VBA segue um padrรฃo de hierarquia de objetos para referenciar um objeto no Excel. Vocรช precisa seguir a estrutura abaixo. Lembre-se, o ponto (.) aqui conecta o objeto em cada um dos diferentes nรญveis.

Aplicativo.Workbooks.Worksheets.Range

Essa hierarquia pode ser alcanรงada por meio de duas propriedades diferentes, sendo a propriedade Range a mais utilizada.

Como fazer referรชncia ao objeto Range VBA do Excel usando a propriedade Range

A propriedade Range pode ser aplicada em dois tipos diferentes de objetos.

  • Objetos de planilha
  • Objetos de alcance

Sintaxe para propriedade Range

  1. A palavra-chave โ€œAlcanceโ€.
  2. Parรชnteses que seguem a palavra-chave
  3. Faixa de cรฉlulas relevante
  4. Cotaรงรฃo (" ")
Application.Workbooks("Book1.xlsm").Worksheets("Sheet1").Range("A1")

Quando vocรช se refere ao objeto Range, como mostrado acima, ele รฉ referido como referรชncia totalmente qualificadaVocรช especificou ao Excel exatamente qual intervalo deseja, em qual planilha e em qual aba.

Exemplo: MensagemBox Planilhas("Planilha1").Intervalo("A1").Valor

Usando a propriedade Range, vocรช pode executar muitas tarefas como,

  • Consulte uma รบnica cรฉlula usando a propriedade range
  • Consulte uma รบnica cรฉlula usando a propriedade Worksheet.Range
  • Consulte uma linha ou coluna inteira
  • Consulte as cรฉlulas mescladas usando a propriedade Worksheet.Range e muito mais

Como tal, serรก demasiado longo para cobrir todos os cenรกrios para a propriedade range. Para os cenรกrios mencionados acima, demonstraremos um exemplo apenas para um. Consulte uma cรฉlula รบnica usando a propriedade range.

Consulte uma รบnica cรฉlula usando a propriedade Worksheet.Range

Para se referir a uma cรฉlula especรญfica, passe o endereรงo dela para a propriedade Range como uma cadeia de texto.

A sintaxe รฉ simples โ€œIntervalo (โ€œCรฉlulaโ€)โ€.

Aqui, usaremos o comando โ€œ.Selectโ€ para selecionar a รบnica cรฉlula da planilha.

Passo 1) Nesta etapa, abra o Excel.

Cรฉlula รบnica usando a propriedade Worksheet.Range

Passo 2) Nesta etapa,

  • Clique em Cรฉlula รบnica usando a propriedade Worksheet.Range botรฃo.
  • Isso abrirรก uma janela.
  • Digite o nome do seu programa aqui e clique no botรฃo 'OK'.
  • Isso o levarรก ao arquivo Excel principal. No menu superior, clique no botรฃo 'parar' de gravaรงรฃo para interromper a gravaรงรฃo da macro.

Cรฉlula รบnica usando a propriedade Worksheet.Range

Passo 3) Na prรณxima etapa,

  • Clique no botรฃo Macro Cรฉlula รบnica usando a propriedade Worksheet.Range no menu superior. Irรก abrir a janela abaixo.
  • Nesta janela, clique no botรฃo 'editar'.

Cรฉlula รบnica usando a propriedade Worksheet.Range

Passo 4) A etapa acima abrirรก o editor de cรณdigo VBA para o arquivo chamado โ€œIntervalo de Cรฉlulas รšnicasโ€. Insira o cรณdigo conforme mostrado abaixo para selecionar o intervalo โ€œA1โ€ da planilha do Excel.

Sub SingleCellRange()
    Range("A1").Select
End Sub

Cรฉlula รบnica usando a propriedade Worksheet.Range

Passo 5) Agora salve o arquivo Cรฉlula รบnica usando a propriedade Worksheet.Range e execute o programa conforme mostrado abaixo.

Cรฉlula รบnica usando a propriedade Worksheet.Range

Passo 6) Vocรช verรก que a cรฉlula โ€œA1โ€ estรก selecionada apรณs a execuรงรฃo do programa.

Cรฉlula รบnica usando a propriedade Worksheet.Range

Da mesma forma, vocรช pode selecionar uma cรฉlula com um nome especรญfico. Por exemplo, se vocรช quiser pesquisar uma cรฉlula com o nome โ€œGuru99- Tutorial de VBAโ€. Vocรช precisa executar o comando conforme mostrado abaixo. Ele selecionarรก a cรฉlula com esse nome.

Faixa("Guru99- Tutorial de VBAโ€.Selecione

Para aplicar outro objeto de intervalo, aqui estรก o exemplo de cรณdigo.

Faixa para seleรงรฃo de cรฉlula no Excel Intervalo declarado
Para linha รบnica Faixa (โ€œ1:1โ€)
Para coluna รบnica Intervalo(โ€œA:Aโ€)
Para cรฉlulas contรญguas Faixa (โ€œA1:C5โ€)
Para cรฉlulas nรฃo contรญguas Faixa (โ€œA1:C5, F1:F5โ€)
Para interseรงรฃo de dois intervalos Faixa (โ€œA1:C5 F1:F5โ€)
(Para cรฉlulas de interseรงรฃo, lembre-se de que nรฃo hรก operador vรญrgula)
Para mesclar cรฉlulas Faixa (โ€œA1:C5โ€)
(Para mesclar cรฉlulas, use o comando โ€œmesclarโ€)

Selecionar uma cรฉlula รฉ apenas o primeiro passo. Na prรกtica, uma macro lรช o conteรบdo de uma cรฉlula e escreve um novo valor de volta.

Como ler e gravar valores com o objeto Range

Quase todas as macros que interagem com uma planilha fazem uma de duas coisas: leem um valor de uma cรฉlula ou escrevem um valor nela. Ambas utilizam a propriedade Valor e nenhuma delas exige que a cรฉlula esteja selecionada previamente.

Sub ReadAndWrite()
    Dim Price As Double
    Dim Qty As Long

    ' Read two values out of the sheet
    Price = Range("B1").Value
    Qty = Range("B2").Value

    ' Write the calculated result back
    Range("B3").Value = Price * Qty

    ' Fill a whole block in one statement
    Range("D1:D10").Value = "Guru99"

    ' Clear only the contents, keeping the formatting
    Range("F1:F10").ClearContents
End Sub

Quatro pontos tornam esse padrรฃo confiรกvel.

  • A opรงรฃo Selecionar nรฃo รฉ obrigatรณria: Conteรบdos Range(โ€œB3โ€).Value = 10 ร‰ mais rรกpido e seguro do que selecionar a cรฉlula primeiro. As macros gravadas estรฃo cheias de `.Select` porque o gravador espelha as aรงรตes do mouse, nรฃo porque o cรณdigo precise disso.
  • Valor versus Texto: .Value retorna os dados subjacentes, enquanto .Text retorna a string formatada exibida na tela, que pode ser truncada pela largura da coluna. Leia .Value em cรกlculos.
  • Blocos inteiros em uma รบnica linha: Atribuir a um intervalo de vรกrias cรฉlulas preenche todas as cรฉlulas de uma sรณ vez, o que รฉ muito mais rรกpido do que procurar.ping.
  • Esclareรงa a questรฃo correta: ClearContents remove apenas os valores, Clear remove tambรฉm a formataรงรฃo e Delete remove as cรฉlulas e desloca as cรฉlulas ao redor.

Uma propriedade de intervalo (Range) referencie uma cรฉlula pela sua letra e nรบmero. Uma segunda propriedade referencie a mesma cรฉlula por dois nรบmeros.

Propriedade da cรฉlula

Da mesma forma que o intervalo, em VBA Vocรช tambรฉm pode usar a propriedade "Cell". A รบnica diferenรงa รฉ que ela possui uma propriedade "item" que vocรช usa para referenciar as cรฉlulas da sua planilha. A propriedade "Cell" รฉ รบtil em um loop de programaรงรฃo.

Por exemplo, nos

Cells.item(Linha, Coluna). Ambas as linhas abaixo se referem ร  cรฉlula A1.

  • Cells.item(1,1) OU
  • Cรฉlulas.item(1,โ€Aโ€)

Diferenรงa entre intervalo e cรฉlulas em VBA

Os operadores Range e Cells acessam as mesmas cรฉlulas da planilha por caminhos diferentes, e a escolha correta torna o cรณdigo mais curto e fรกcil de ler.

Ponto de diferenรงa Variaรงรฃo Cรฉlulas
Formato de endereรงo Uma cadeia de texto, Range(โ€œA1โ€) Dois nรบmeros, Cรฉlulas(1, 1)
Mรบltiplas cรฉlulas Sim, Range(โ€œA1:C5โ€) Uma cรฉlula de cada vez
Dentro de um loop Requer concatenaรงรฃo de strings O nรบmero da linha pode ser o contador do loop.
legibilidade Corresponde ao endereรงo que vocรช vรช no Excel. A coluna 27 รฉ mais difรญcil de visualizar do que AA.
Uso combinado Range(Cells(1, 1), Cells(5, 3)) constrรณi o intervalo A1:C5 a partir de nรบmeros

A regra prรกtica รฉ usar Range para um endereรงo fixo que vocรช possa ler rapidamente e Cells sempre que um nรบmero de linha ou coluna for calculado em tempo de execuรงรฃo.

Propriedade de deslocamento de intervalo

A propriedade de deslocamento de intervalo selecionarรก linhas/colunas longe de sua posiรงรฃo original. Com base no intervalo declarado, as cรฉlulas sรฃo selecionadas. Veja o exemplo abaixo.

Por exemplo, nos

Range("A1").Offset(RowOffset:=1, ColumnOffset:=1).Select

O resultado serรก a cรฉlula B2. A propriedade de deslocamento moverรก a cรฉlula A1 uma coluna e uma linha para a frente. Vocรช pode alterar os valores de DeslocamentoDaLinha/DeslocamentoDaColuna conforme necessรกrio. Vocรช pode usar um valor negativo (-1) para mover as cรฉlulas para trรกs.

Baixe o Excel contendo o cรณdigo acima

Baixe a planilha do Excel acima. Code

Perguntas Frequentes

Use Cells(Rows.Count, 1).End(xlUp).Row. Ele comeรงa na parte inferior da coluna A e salta para a รบltima cรฉlula que contรฉm dados, o que รฉ mais confiรกvel do que UsedRange depois que as linhas foram excluรญdas.

Cada operaรงรฃo de leitura ou gravaรงรฃo envolve o uso do VBA e do Excel. Carregue o intervalo em uma matriz com uma รบnica atribuiรงรฃo, processe a matriz na memรณria e, em seguida, grave-a de volta em uma รบnica instruรงรฃo. Desativar a atualizaรงรฃo da tela tambรฉm ajuda.

Geralmente, trata-se de um endereรงo invรกlido, um nome de planilha inexistente ou uma tentativa de selecionar um intervalo em uma planilha que nรฃo estรก ativa. Qualifique a referรชncia com a planilha ou ative a planilha primeiro.

Sim. Cole o cรณdigo gravado e um assistente de IA substituirรก cada par `Select` e `Selection` por uma referรชncia direta e totalmente qualificada ao intervalo (Range). Execute ambas as versรตes em uma cรณpia e compare a planilha antes de manter.ping o troco.

Sim. Descreva o objetivo, como por exemplo, todas as linhas preenchidas nas colunas A a D da planilha de Dados, e um assistente de IA retornarรก a expressรฃo de intervalo correspondente. Verifique-a com uma pequena amostra antes de executรก-la em dados reais.

Resuma esta postagem com: