Funcionou perfeitamente. Os comentários no código me ajudaram a entendê-lo. muito obrigado! Tópico resolvido.
E para os curiosos do futuro:
A instrução ReDim é usada para dimensionar ou redimensionar uma matriz dinâmica que já tenha sido declarada formalmente usando-se uma instrução Private, Public ou Dim com os parênteses vazios (sem subscritos de dimensão).
Você pode usar a instrução ReDim repetidamente para alterar o número de elementos e dimensões em uma matriz. Entretanto, você não pode declarar uma matriz de um tipo de dados e usar posteriormente ReDim para alterar a matriz para um outro tipo de dados, a menos que a matriz esteja contida em um Variant. Se a matriz estiver contida em um Variant, o tipo dos elementos podem ser alterados usando-se uma cláusula As type, a menos que você esteja usando a palavra-chave Preserve, que no caso, não permite alterações no tipo de dados.
Se você usar a palavra-chave Preserve, poderá redimensionar somente a última dimensão da matriz e não poderá alterar o número de dimensões. Por exemplo, se sua matriz possuir somente uma dimensão, você poderá redimensionar essa dimensão porque ela é a última e a única dimensão. Entretanto, se sua matriz possuir duas ou mais dimensões, você poderá alterar somente o tamanho da última dimensão e ainda preservar o conteúdo da matriz. O exemplo a seguir mostra como você pode aumentar o tamanho da última dimensão de uma matriz dinâmica sem apagar os dados nela contidos.
ReDim X(10, 10, 10)
. . .
ReDim Preserve X(10, 10, 15)
De forma semelhante, quando você usa Preserve, pode alterar o tamanho da matriz somente alterando o limite superior; alterar o limite inferior gera um erro.
Se você tornar uma matriz menor do que seu tamanho original, os dados contidos nos elementos eliminados serão perdidos. Se você passar uma matriz para um procedimento por referência, não poderá redimensionar a matriz dentro do procedimento.
Quando as variáveis são inicializadas, uma variável numérica é inicializada como 0, uma seqüência de comprimento variável é inicializada como uma seqüência de comprimento zero ("") e uma seqüência de comprimento fixo é preenchida com zeros. As variáveis Variant são inicializadas como Empty. Cada elemento de uma variável de tipo definido pelo usuário é inicializado como se fosse uma variável independente. Uma variável que faz referência a um objeto deve ser atribuída a um objeto existente usando-se a instrução Set antes que possa ser usada. Até que um objeto seja atribuído a ela, a variável de objeto declarada terá o valor especial Nothing, o que indica que ela não faz referência a uma ocorrência específica de um objeto.
Cuidado A instrução ReDim age como uma instrução declarativa se a variável que ela declara não existir no nível de módulo ou no nível de procedimento. Se outra variável com o mesmo nome for criada posteriormente, mesmo em um escopo mais amplo, ReDim fará referência à variável posterior e não causará necessariamente um erro de compilação, mesmo que Option Explicit esteja em vigor. Para evitar esses conflitos, ReDim não deve ser usada como uma instrução declarativa, mas simplesmente para o redimensionamento de matrizes.
Observação Para redimensionar uma matriz contida em um Variant, você deve declarar a variável Variant explicitamente antes de tentar redimensionar sua matriz.
Postado : 03/04/2013 6:35 am