Determinando o Tamanho da Matriz em Tempo de Execução
Ao escrever uma instrução Dim para declarar uma matriz, está-se efetivamente preestabelecendo o tamanho da matriz. Pode ser que você conheça exatamente de que tamanho deverá ser a matriz, ou talvez saiba seu tamanho máximo. (Por exemplo, você pode saber que trabalhar com mais de 21 doninhas é muito difícil.) Em tais casos, uma matriz de tamanho fixo é o ideal. O problema ocorre quando não se conhece o tamanho da matriz. Suponha, por exemplo, que você deseje vender o seu programa de tratamento de doninhas para outras pessoas. Como você deve dimensionar a matriz ?
Você pode simplesmente escolher um número arbitrariamente grande, achando que será suficiente, porém encontrará dois problemas com essa abordagem. Primeiro, é necessária muita memória; a instrução Dim reserva memória para a matriz completa, esteja ou não sendo usada. Em segundo lugar, você está correndo o risco de vender o programa para alguém que queira criar mais doninhas do que você acha praticável; o seu programa falhará e você terá um cliente insatisfeito.
Para resolver essa questão, o Visual Basic oferece a instrução ReDim, que redimensiona uma matriz. ReDim não é uma declaração, é uma instrução que pode ser executada várias vezes durante um processamento do programa. Para usar a instrução ReDim, você deve retirar a indicação da dimensão da matriz (tamáximo) de seu programa. Essa omissão avisará que se trata de uma matriz dinâmica (aquela cuja dimensão ou tamanho pode modificar-se). Examine esse fragmento de programa que serve apenas para ilustrar como ReDim funciona:
Dim Teste() As Integer 'Na seção de declarações gerais
'Em algum procedimento de evento
For Tamanho = 10 To 50 Step 10
' Redimensiona a matriz teste
ReDim Teste(Tamanho) As Integer
Next Tamanho
Como a declaração original da matriz Teste não contém o componente tamáximo, o Visual Basic irá reconhecê-la como uma matriz dinâmica. Em algum ponto, o laço For será executado. Na primeira passagem do laço, Teste é redimensionada como uma matriz de 11 elementos (com elementos numerados de 0 a 10). Na próxima passagem, Teste será redimensionada. como uma matriz de 21 elementos. Quando o laço estiver completo, Teste estará dimensionada como uma matriz de 51 elementos
Espero que ter colocado coisa demais