Blog

Postado em em 10 de setembro de 2022

Coleções no VBA – O que é e Como Usar?

Você sabe o que são coleções no VBA? Sabe como usar e como elas podem te ajudar? Então vem comigo que eu vou te mostrar.

Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo!

Para receber por e-mail o(s) arquivo(s) utilizados na aula, preencha:

Fala, Impressionadores! Na aula você vai ver como usar coleções no VBA!

Um objeto um pouco diferente no VBA, mas que tem suas vantagens! Você vai ver também uma comparação entre coleções matrizes e dicionários, para que você entenda a diferença entre eles e saiba quando utilizar cada um.

E aí bora aprender como funciona uma coleção no VBA e como ela pode te ajudar?

O que é uma coleção no VBA?

Segundo a própria Microsoft, uma coleção é “um conjunto ordenado de itens que podem ser chamados de unidade”.

O objeto Collection (como originalmente é chamada) fornece uma maneira conveniente de se referir a um grupo relacionado de itens como um único objeto

Os itens (como originalmente são chamados), ou membros, em uma coleção só precisam estar relacionados pelo fato de que eles existem dentro dessa coleção.

Além disso, os membros de uma coleção não têm que compartilhar o mesmo tipo de dados: eles podem ser de tipos diferentes.

Comparação entre coleções matrizes e dicionários

Coleção

Já definida acima, as vantagens principais dela são:

  • Difícil de puxar informações de um intervalo, com extrema rapidez
  • É imutável, em relação aos seus elementos/itens

Suas principais desvantagens perante aos outros dois tipos comparados são:

  • Tamanho se ajusta automaticamente, conforme algum item entre ou saia
  • Fácil de inserir/remover itens específicos, em posições específicas

Matriz

A matriz é um conjunto de elementos sequencialmente indexados com o mesmo tipo de dado intrínsecos, por definição.

Cada elemento de uma matriz tem um número de índice de identificação exclusivo. As alterações feitas em um elemento de uma matriz não afetam os outros elementos.

Suas principais vantagens perante aos outros dois tipos comparados são:

  • Ótimo para puxar informações de um intervalo, com rapidez
  • É mutável, ou seja, pode mudar os itens em valores, adicionar, remover etc

Suas principais desvantagens perante aos outros dois tipos comparados são:

  • Precisa definir o tamanho inicialmente ou ajustar posteriormente (precisa prever esses fatos dentro do código)
  • Difícil de inserir/remover itens específicos

Dicionário

É um tipo de objeto que armazena pares de chave/item de dados. Tipo de matriz que vai associar itens, que podem ser de quaisquer tipos de dados.

Cada item está associado a uma chave exclusiva.

A chave é usada para recuperar um item individual e geralmente é um inteiro ou uma cadeia de caracteres, mas pode ser qualquer coisa, exceto uma matriz.

Suas principais vantagens são:

  • É mutável
  • Tamanho se ajusta automaticamente
  • Fácil de inserir/remover itens específicos

Suas principais desvantagens são:

  • Difícil de puxar informações de um intervalo

OBS: Para entender melhor sobre os tipos de dados no VBA, visite esse link oficial

Inserir um módulo no VBA e colocando nosso código objeto de estudo

Um código do VBA geralmente fica armazenado dentro de um módulo.

Para criá-lo, precisamos primeiramente abrir o ambiente do VBA, usando o seguinte atalho do teclado: Alt(+Fn)+F11.

Vamos na guia Inserir > Módulo, e uma caixa branca se abrirá.

Coleções no VBA

Por padrão ele terá o nome de “Módulo 1”.

Com o módulo criado, colocaremos o código objeto da aula de hoje dentro dele:

Sub alimentar_colecao()

Dim matriz As Variant
Dim colecao As New Collection
Dim i As Long
Dim item_colecao As Variant

matriz = Range("A1").CurrentRegion.Value 

For i = LBound(matriz) + 1 To UBound(matriz)
    If matriz(i, 3) < 200 Then
        colecao.Add matriz(i, 2)
    End If
Next

i = 2

For Each item_colecao In colecao
    Cells(i, 8).Value = item_colecao
    i = i + 1
Next


End Sub

Comentários a respeito do código acima:

  • Dimensionar:
    • a variável “matriz” como uma variável do tipo Variant
    • a variável “colecao” como uma variável do tipo Collection
    • a variável “i” como uma variável do tipo Long (número inteiro)
    • a variável “item_colecao” como uma variável do tipo Variant
  • A matriz vai receber os valores presentes na região preenchida nas células a partir de A1 da nossa aba de dados (aba de nome “Tabela”). Isso significa assumir os valores da seguinte região:
    1 4
  • Utilizar de uma estrutura de repetição do tipo For, que vai, do menor valor de índice da matriz (primeiro termo) + 1 (porque o primeiro termo equivale ao cabeçalho, que nós não queremos, e ele é representado pelo número 0), até o maior valor de índice da matriz (último termo) (representado pela última linha da tabela, a linha 26 mostrada acima), representadas pela variável “i” que muda a cada volta, fazendo as seguintes ações:
    • testar, através de uma estrutura If de comparação, se item de valor que está na célula da linha “i” e coluna 3 (C) da planilha é menor do que 200. Caso seja, vai:
      • adicionar, na “colecao” o item da “matriz” naquela linha específica (i) e e coluna 2 (B) da planilha
    • Percorrerá todos os itens da variável “matriz”, realizando os procedimentos descritos acima
    • Em seguida: definir uma variável auxiliar chamada de “i”, que vai inicialmente receber o valor 2
    • Utilizar de uma estrutura de repetição do tipo For Each, que vai percorrer todas os itens da coleção (representadas pela variável “item_colecao” a cada volta) da coleção em questão (representado pela variável “colecao”). Ao percorrer, fará a seguintes ações:
      • armazenar, na célula de linha “i” e coluna 8 (H), o valor correspondente ao “item_colecao”, que é de fato como vamos adicionar elementos na coluna com VBA
      • Acrescer 1 unidade ao valor da variável “i”, que vai nos permitir preencher um possível próximo item naquela coluna
    • Se encerra o código

Repare que, ao rodar o código, os mesmos itens da coleção são os que vão para a planilha:

Coleções no VBA

Conclusão – Coleções no VBA

Nessa aula você lidou com o ambiente do VBA, construindo um código que te permtiu entender como adicionar elementos em uma coluna com VBA.

Além disso, para estruturar o código, precisou ver como fazer a declaração de variáveis no VBA, aprender sobre a comparação entre coleções matrizes, e dicionários, além dos conceitos de dicionário no VBA e matriz no VBA.

Até a próxima, Impressionadores! Fique ligado no nosso canal do Youtube para mais conteúdo de VBA!

Hashtag Treinamentos

Para acessar outras publicações de VBA, clique aqui!


Quer aprender mais sobre VBA com um minicurso básico gratuito?

Quer sair do zero no Python e virar uma referência na sua empresa? Inscreva-se agora mesmo no Python Impressionador