Como usar coleções VBA no Excel

Anonim


Uma coleção é um tipo de dados que contém objetos de armazenamento exatamente como matrizes (mas diferentes). Ao escrever códigos VBA básicos, você deve ter usado pastas de trabalho, planilhas, intervalos, etc. Todos eles são coleções. Neste artigo, aprenderemos sobre as coleções do VBA.
O que é uma coleção no VBA?
Uma coleção é um tipo de dados que armazena tipos semelhantes de objetos, assim como matrizes.

Mas, ao contrário dos arrays, seu tamanho pode ser aumentado ou diminuído dinamicamente de acordo com a necessidade.

Você pode adicionar, localizar, buscar e excluir itens das coleções.

Ao contrário do array, você não pode alterar os valores dos itens nas coleções. Se quiser, use arrays como item na coleção.

Uma coleção possui 4 propriedades ou métodos associados a ela.

 Coleção.Adicionar coleção.Item coleção.Contar coleção.Remover 

Através deste artigo, explorarei o uso dessas propriedades.
Como criar uma coleção no VBA?
Uma coleção é um objeto, portanto, é necessário declará-la e inicializá-la. Como qualquer outro objeto no VBA, existem dois métodos de criação de uma coleção no VBA.
1. Criação Instantânea

Dim itens como nova coleção

No método acima, o objeto é criado instantaneamente. Você pode começar a usar essa coleção para atender às suas necessidades imediatamente.

2. Criação Atrasada

 Dim itens como itens do conjunto de coleção = Nova coleção 

Neste método, primeiro criamos uma referência de coleção e, quando necessário, inicializamos com um objeto de coleção. Usando este método, você pode escolher criar a coleção com base em alguns critérios.

Adicionando itens a uma coleção (coleção.Adicionar)
Usamos o método Add para adicionar novos itens a uma coleção.

itens.Adicione "Maçãs"

O código acima adicionará a string "Maçãs" na coleção.

items.Add 1.4

O código acima adicionará o dobro de 1.4 ao final da coleção.

Também podemos definir chaves para esses itens. Essas chaves podem ser usadas para acessar os itens da coleção.

Inserindo itens na coleção antes ou depois de um item existente

O método Add adiciona novos itens no final da coleção.

O método add tem quatro parâmetros.

Adicionar (item, [chave], [antes], [depois])

O primeiro argumento é necessário. É o objeto ou que você deseja adicionar à coleção. Os argumentos restantes são opcionais. Veremos os usos desses argumentos nesta seção.

Se quisermos adicionar algum item antes ou depois de algum índice / chave perticular, usamos os parâmetros Antes e Depois do método Add.

items.Add True, "b", "cnst" 'Ou items.Add True, Before: = "cnst"

Ambas as linhas irão inserir um valor booleano antes da chave "cnst" nos itens da coleção VBA.

Para inserir um item após um índice / item / chave perticular, usamos o parâmetro After do método Add.

'inserindo "Mango" com a chave "m" após os itens da chave "cnst ".Adicione" Mango ", Chave: =" m ", após: =" b "

A linha acima irá inserir "Mango" com a tecla "m" após a tecla "b".

Observação: As chaves dos itens devem ser exclusivas. Qualquer chave que já exista na coleção não será aceita. O VBA retornará um erro de que "a chave já está associada a um elemento desta coleção".

Podemos usar isso para nossa vantagem, obter uma lista exclusiva da coleção.
Acessar itens da coleção (Collection.Item)

Existem dois métodos de acesso aos itens de uma coleção.

  1. Nome da coleção ("índice / chave")
  2. CollectionName.Item ("índice / chave")

Por exemplo, para acessar um membro em uma coleção Itens no índice 1 e na chave "apl", posso usar qualquer um dos códigos VBA abaixo.

Debug.Print items.Item (1) - Debug.Print items (1) - Debug.Print items.Item ("apl") - Debug.Print items ("apl")


Como obter a contagem de itens em uma coleção? (Coleção.Conta)
Para obter o número total de objetos ou itens em uma coleção, usamos a função .Count da coleção. O método .Count retorna o número total de itens na coleção.

 items.Count

A linha acima fornecerá a contagem de objetos que a coleção possui.

Como acessar todos os itens de uma coleção?

A única maneira de acessar todos os itens da coleção no VBA são os loops. Nós iteramos em cada item da coleção para acessá-los. Para isso, usamos o loop for. O loop for-each é considerado a maneira mais rápida e limpa de acessar os objetos da coleção.
Looping por meio de uma coleção em VBA

Existem várias maneiras de percorrer a coleção em VBA. Usaremos most elegant para cada loop para iterar pela coleção.

Para percorrer cada item de uma coleção, basta usar esta linha de código VBA.

Para cada itm nos itens Debug.Print itm Next itm


Removendo itens de uma coleção (Collection.Remove)

Para remover um item de uma coleção vba, podemos usar o método Remove. O método remove leva um argumento. Pode ser o índice ou a chave do item (se disponível).

items.Remove (1) 'using index - items.Remove 1 - items.Remove ("apl")' using key - items.Remove "apl"

Excluindo coleção no VBA

Bem, você não pode excluir uma coleção em vba. No entanto, você pode remover todos os itens dessa coleção definindo-a novamente como uma nova coleção.

Definir itens = Nova coleção

Esta linha de código criará uma nova coleção no endereço dos itens. Conseqüentemente, nossa coleção será esvaziada.

Array vs Collection em VBA

    Variedade

  1. O tamanho da matriz é predefinido. O tamanho da matriz não pode ser alterado normalmente.
  2. Os vetores podem conter apenas o mesmo tipo de dados e o tipo deve ser declarado primeiro.
  3. A indexação na matriz começa em 0
  4. Os membros da matriz não possuem nenhuma chave associada.
  5. Matrizes são mutáveis. Você pode alterar os valores de seus membros.

    Coleção

  1. O tamanho da coleção muda conforme os itens são adicionados ou removidos.
  2. Uma coleção pode conter qualquer número de tipos de dados. Como você viu nos exemplos acima.
  3. A indexação na coleção VBA começa em 1.
  4. Os membros da coleção podem ter chaves associadas.
  5. As coleções são imutáveis. Você não pode alterar os valores de seu membro diretamente.

Então sim pessoal, este é o básico das coleções. Há muitos benefícios e usos da coleção VBA em ferramentas de escritório. Vamos explorá-los juntos. Até então, se você tiver alguma dúvida sobre coleção ou qualquer coisa relacionada a Excel / VBA, coloque na seção de comentários abaixo.