Notifications
Clear all

Erro ao redimensionar array

3 Posts
2 Usuários
0 Reactions
1,062 Visualizações
(@klarc28)
Posts: 971
Prominent Member
Topic starter
 
   For linha2 = linha + 1 To Plan1.UsedRange.Rows.Count
            If UCase(Plan1.Range("B" & linha).Value) = UCase(corretora) Then
                If UCase(Plan1.Range("C" & linha).Value) = UCase(ativo) Then
                    
                    tbAuxiliar(linha2 - 1, 0) = Plan1.Range("B" & linha).Value
                    tbAuxiliar(linha2 - 1, 1) = Plan1.Range("C" & linha).Value
                    tbAuxiliar(linha2 - 1, 2) = Plan1.Range("D" & linha).Value
                    tbAuxiliar(linha2 - 1, 3) = Plan1.Range("F" & linha).Value
                    ReDim Preserve tbAuxiliar(UBound(tbAuxiliar) + 1, 4)
                    
                End If
                
            End If

Está dando o erro
Matriz já foi dimensionada.
Na linha:

ReDim Preserve tbAuxiliar(UBound(tbAuxiliar) + 1, 4)
 
Postado : 29/04/2018 4:03 pm
(@edcronos2)
Posts: 346
Reputable Member
 

vc só pode redimensionar a ultima dimensão do array
ARRAY( L , C ) , NO CASO APENA A DIMENSÃO "C" PODE SER REDIMENSIONADA
para redimensionar a primeira vc vai ter que transpor o array

 
Postado : 29/04/2018 4:20 pm
(@edcronos2)
Posts: 346
Reputable Member
 

não faça varredura em ranges, pegue toda de uma vez
ALGO ASSIM

     With ThisWorkbook.Sheets("DADOS")
          Lir = 5
          LFr = .Cells(Rows.Count, "B").End(xlUp).Row
          result = .Range(.Cells(Lir, "b"), .Cells(LFr, "h")).Value2
     End With

DEPOIS FAÇA A VARREDURA NO PRÓPRIO ARRAY
se for para aquela planilha de açoes existem outras maneiras , mas o certo é saber como são realmente os dados, se tem alterações muito frequentes, se tem uma base de dados muito grande, se esses dados vai alimentar outra base ,...
para conseguir os dados basicos exclusivos vc pode usar dicionario , tbm pode concatenar para facilitar
existem muitas maneiras , mas o projeto que vai definir qual a melhor

 
Postado : 29/04/2018 4:36 pm