Discussione:
Ridimensionare una matrice
(troppo vecchio per rispondere)
Archimede
2012-09-17 20:28:40 UTC
Permalink
Ciao a Tutti,
Vorrei chiederVi una informazione, vorrei caricare una matrice con 10 elementi e poi ad un certo punto del codice avrei bisogno di "troncarla" prendendo solo i primi 5 elementi.
Si può fare con Redim e Preserve scrivendo una sola riga di codice?
Faccio questa domanda solo a titolo di conoscenza, infatti certo che se faccio un ciclo e carico una nuova matrice ci metto i primi 5 elementi, ma volevo capire se posso ad un certo punto troncare una matrice sfruttando per cui lo stesso nome e una sola parte dei valori in essa contenuti.
Non mi sembra che la cosa sia possibile però magari Voi .....

Grazie e Ciao Ciao


Sub PROVA()
Dim MTX(1 To 10) As variant
Dim Z As Integer

For Z = 1 To 10'carico la mtx
MTX(Z) = Cells(Z, 1)
Next
'........bla...bla....
'...a questo punto mi verrebbe comodo troncare la mtx
ReDim MTX(1 To 5)

End Sub
plinius
2012-09-17 22:41:02 UTC
Permalink
Post by Archimede
Ciao a Tutti,
Vorrei chiederVi una informazione, vorrei caricare una matrice con 10 elementi e poi ad un certo punto del codice avrei bisogno di "troncarla" prendendo solo i primi 5 elementi.
Si può fare con Redim e Preserve scrivendo una sola riga di codice?
Faccio questa domanda solo a titolo di conoscenza, infatti certo che se faccio un ciclo e carico una nuova matrice ci metto i primi 5 elementi, ma volevo capire se posso ad un certo punto troncare una matrice sfruttando per cui lo stesso nome e una sola parte dei valori in essa contenuti.
Non mi sembra che la cosa sia possibile però magari Voi .....
Grazie e Ciao Ciao
Sub PROVA()
Dim MTX(1 To 10) As variant
Dim Z As Integer
For Z = 1 To 10'carico la mtx
MTX(Z) = Cells(Z, 1)
Next
'........bla...bla....
'...a questo punto mi verrebbe comodo troncare la mtx
ReDim MTX(1 To 5)
End Sub
Sì, come hai detto.
Però usando ReDim anche nel primo dimensionamento e troncando con il
"Preserve".

Sub PROVA()
ReDim MTX(1 To 10) As variant
Dim Z As Integer

For Z = 1 To 10'carico la mtx
MTX(Z) = Cells(Z, 1)
Next
'........bla...bla....
'...a questo punto mi verrebbe comodo troncare la mtx
ReDim Preserve MTX(1 To 5)

End Sub

Ciao,
E.
Archimede
2012-09-18 05:13:18 UTC
Permalink
Grazie Plinius
con questa risposta la mia giornata inizia veramente bene, io sbagliavo il primo dimensionamento usando dim infatti mi dava sempre di errore matrice già dimensionata! Non ci sarei mai riuscito a risolvere il caso!
Grazie tantissimo
Ciao e buona giornata anche a te!!!
plinius
2012-09-18 08:12:47 UTC
Permalink
Post by Archimede
Grazie Plinius
con questa risposta la mia giornata inizia veramente bene, io sbagliavo il primo dimensionamento usando dim infatti mi dava sempre di errore matrice già dimensionata! Non ci sarei mai riuscito a risolvere il caso!
Grazie tantissimo
Ciao e buona giornata anche a te!!!
Da Archimede mi sarei aspettato un "eureka" :-)

Buona giornata anche a te,
E.
Archimede
2012-09-18 14:27:11 UTC
Permalink
... mi sarei aspettato un "eureka" :-)

hai ragione ! ma Archimede era nella vasca da bagno quando si accorse che galleggiava ( ho sempre avuto il dubbio su cosa realmente galleggiasse !!!) .
Io invece ho la doccia :-(

Loading...