Acho ótima ideia, Ed... Eu já trabalhei com multiplas arrays, mas não array de arrays, era coleção de arrays. Assim eu pegava multiplas arrays, uma para cada coluna, e as colocava numa collection. Visando aumentar a quantidade de dados que eu conseguia usar, contornando a msg de limite de memória. Era uma coleção de matrizes bidimensionais de uma coluna só... Dava quase o mesmo resultado final, mas eu perdi desempenho considerável em matrizes pequenas, mas ganhei desempenho e escalabilidade consideravel em matrizes grandes. Só decidi não continuar, pq a maioria das matrizes com que trabalho, são relativamente relativamente pequenas. Eu não cheguei, à época a trabalhar com array de array, ou array tridimencional.... como eu falei outro dia, eu acho interessante e achei bonito até, o seu exemplo.
Eu confesso que em quase 20 anos de experiencia, não vi necessidade para uma array cubica, mas isso não significa que não existam e não possam ser úteis. Você certamente já passou por experiências onde elas foram necessarias. Quanto ao ReDim preserve, eu uso em meus códigos, mas com cuidado, claro. Disparar em toda iteração de loop, é complicado pq é verdadeiramente lenta. Então há que se ter uma ideia do tamanho da matriz, dimensioná-la conforme seu escopo de utilização, e a cada iteração do loop, verificar se já chegou no fim dela, e se for necessário, usar o transpose e o preserve e o transpose, para dobrar o tamanho, ou usar um incremento consideravel.. e lá no final do loop, daí sim, o ultimo preserve para ela ter tamanho exato..
E claro, você já deve fazer isso, mas vou falar, pq nunca chegamos nesse ponto em nossas conversas... Mais importante do que usar (que é o que eu faço) ou até extrapolar o uso com maestria (que é o que vc faz, rs), é limpar a memória no final. Matrizes aumentam consideravelmente o consumo de memória RAM, e já aconteceu muitas vezes comigo, que quando acabava de executar a rotina, a memória não voltava ao estado inicial. Mais recentemente nas ultimas versões do Excel, eu não consegui replicar o problema, o que me indica que a MS fez algo para que a memória fosse liberada após o VBA terminar. Mas mesmo assim, pelas boas práticas e tb pq nunca sei qual a versão do Excel o meu usuário vai usar, eu limpo a variável das matrizes usando Erase e Empty... Assim se vc fizer no passo a passo, vai perceber o quanto uma array pesa e o quanto conseguimos liberar, se estiver monitorando o Gerenciador de Tarefas.... Mas que fique claro, esse último parágrafo não é pra te ensinar, tenho certeza que vc já sabe. Mas caso alguém acompanhe essa leitura até aqui e não saiba, podem aprender.
Um abs,
FF
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Postado : 04/06/2017 10:42 am