Eu gostaria de adicionar um valor ao final de uma matriz VBA. Como posso fazer isso? Não consegui encontrar um exemplo simples online. Aqui estão alguns pseudocódigo mostrando o que eu gostaria de poder fazer.
Public Function toArray(range As range)
Dim arr() As Variant
For Each a In range.Cells
'how to add dynamically the value to end and increase the array?
arr(arr.count) = a.Value 'pseudo code
Next
toArray= Join(arr, ",")
End Function
microsoft-excel
vba
megloff
fonte
fonte
arr = Range.Value
?Respostas:
Tente isto [EDITADO]:
fonte
UBound(arr)
requer quearr
é inicializado com alguma dimensão, por exemplo,Dim arr(1) As Variant
mas depois oReDim Preserve
está falhando e diz que o array já está dimensionado? com outras palavras, você não pode redimitar uma matriz no VBA?Collection
e convertê-lo posteriormente para uma matriz. Alguma outra sugestão?UBound(arr)
requer uma matriz já dimensionada. Bem, parece que eu tenho que usar uma coleção. Obrigado de qualquer maneiraResolvi o problema usando uma coleção e copiei-o posteriormente para uma matriz.
fonte
É assim que eu faço, usando uma variável Variant (array):
Ou, se você realmente precisar de uma matriz de Variantes (para passar para uma propriedade como Shapes.Range, por exemplo), poderá fazê-lo desta maneira:
fonte
Se o seu intervalo for um vetor único e, em uma coluna, o número de linhas for menor que 16.384, você poderá usar o seguinte código:
fonte
Valeu. Fazendo o mesmo com 2 funções, se puder ajudar outros noobs como eu:
Coleção
Matriz 1D:
Uso
fonte
A resposta está na resposta aceita em (sem o problema ReDim):
/programming/12663879/adding-values-to-variable-array-vba
Em resumo:
fonte
fonte