/ / Dynamic Array no Excel VBA

Matriz Dinâmica no Excel VBA

Se o tamanho do seu array aumentar e você não quiser corrigir o tamanho do array, você pode usar o Palavra-chave ReDim. Excel VBA Em seguida, altera o tamanho da matriz automaticamente.

Adicione alguns números à coluna A.

Matriz Dinâmica no Excel VBA

Coloque um botão de comando em sua planilha e adicione as seguintes linhas de código:

1. Primeiro, declaramos o array com números nomeados. Também declare duas variáveis ​​do tipo Integer. Um tamanho nomeado e um chamado i.

Dim numbers() As Integer, size As Integer, i As Integer

Nota: o array ainda não tem tamanho. números, tamanho ei são escolhidos aleatoriamente aqui, você pode usar qualquer nome. Lembre-se de se referir a esses nomes no restante do seu código.

2. Em seguida, determinamos o tamanho do array e o armazenamos no tamanho da variável. Você pode usar a função de planilha CountA para isso. Adicione a seguinte linha de código:

size = WorksheetFunction.CountA(Worksheets(1).Columns(1))

3. Agora sabemos o tamanho do array e podemos redimensioná-lo. Adicione a seguinte linha de código:

ReDim numbers(size)

4. Em seguida, inicializamos cada elemento da matriz. Nós usamos um loop.

For i = 1 To size
    numbers(i) = Cells(i, 1).Value
Next i

5. Exibimos o último elemento da matriz usando uma MsgBox.

MsgBox numbers(size)

6. Saia do Editor do Visual Basic e clique no botão de comando na folha.

Resultado:

Último elemento da matriz

7. Agora, para ver claramente por que isso é chamado de matriz dinâmica, adicione um número à coluna A.

Adicionar número

8. Clique no botão de comando novamente.

Resultado da Matriz Dinâmica

Conclusão: O Excel VBA alterou automaticamente o tamanho dessa matriz dinâmica.

9. Quando você usa a palavra-chave ReDim, você apaga todos os dados existentes atualmente armazenados na matriz. Por exemplo, adicione as seguintes linhas de código ao código criado anteriormente:

ReDim numbers(3)
MsgBox numbers(1)

Resultado:

Sem preservar

A matriz está vazia.

10. Quando você quiser preservar os dados na matriz existente ao redimensioná-los, use a palavra-chave Preservar.

ReDim Preserve numbers(3)
MsgBox numbers(1)

Resultado:

Com Preserve

Leia também: