Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[vba] memorizzare tanti variabili

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

[vba] memorizzare tanti variabili

Postdi ramset64 » 28/06/10 21:36

Ciao, vi chiedo gentilmente ancora un aiuto.
Se ho un codice tipo:

if i= 1 to 100

.....
.....
....
miovalore= Y
next i

Ne consegue che la variabile miovalore assume 100 valori diversi, la domanda è, come faccio a memorizzare i 100 valori di "miovalore" per poi poterli richiamare?

Grazie, ciao a tutti
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Sponsor
 

Re: [vba] memorizzare tanti variabili

Postdi Flash30005 » 28/06/10 22:35

Forse intendevi dire
Codice: Seleziona tutto
For i = 1 to 100
...
...
Next i

Comunque usa un vettore
Dim Miovalore(100) as Integer '(se valore)
oppure
Dim Miovalore(100) as String '(se stringa)

Poi assegnerai
Con
Codice: Seleziona tutto
For i = 1 to 100
...
Miovalore(i) = 'la tua  variabile (da 1 a 100)
Next i


Quando richiamerai ad esempio:
Miovalore(16)
avrai la variabile corrispondente alla variabile 16 assegnata

ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [vba] memorizzare tanti variabili

Postdi Anthony47 » 28/06/10 23:09

Dim Miovalore(100) as Integer '(se valore)
oppure
Dim Miovalore(100) as String '(se stringa)
Il tipo di dati usati da Flash sono ovviamente solo degli esempi. e nulla impedisce di dichiarare solo il vettore e la sua dimensione lasciando indefinito il suo contenuto (che quindi sara' "variant", cioe' variabile), es:
Codice: Seleziona tutto
Dim Miovalore(100)

Ovviamente allocazione della memoria e il tempo di esecuzione saranno meno ottimizzati.

Ciao.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13903
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [vba] memorizzare tanti variabili

Postdi ramset64 » 29/06/10 07:50

Si Flash ovviamente era un errore di battitura, perdonami. Grazie a te ed al mitico Anthony. ciao
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Re: [vba] memorizzare tanti variabili

Postdi ramset64 » 29/06/10 20:16

A titolo di curiosità, se anzichè mettere 100 volessi lasciare il numero indefinito come si fa? Io ho messo un numero decisamente più alto di quello che mi serve e quindi ho risolto, ma per curiosità mi piacerebbe saperlo.... grazie :-)
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Re: [vba] memorizzare tanti variabili

Postdi Flash30005 » 29/06/10 21:35

Parlare di indefinito è improprio se trattasi di variabili che sono su un foglio di excel

suppongo che le variabili siano valori di celle o calcoli tra celle che sono in uno dei fogli quindi il numero non è indefinito
usando il vettore potrai fargli assumere il numero massimo delle righe o attribuire un valore al di sopra di ogni "aspettativa", poi, se non attribuirai tutti i valori al vettore non succede nulla.

Ok?

Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [vba] memorizzare tanti variabili

Postdi Anthony47 » 29/06/10 23:42

Un vettore deve essere allocato in memoria prima di essere utilizzato, quindi devi impostarne la dimensione su un valore sufficiente per l' uso che ne devi fare. Puoi pero' usare ReDim per dimensionare di volta in volta il vettore alla dimensione che ti serve, avendo cosi' una migliore gestione di memoria. Nell' esempio che avevi fatto:
Codice: Seleziona tutto
Dim Miovalore()
'. . .
Redim Miovalore(100)
For I=1 to 100
'. . .

Ciao.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13903
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [vba] memorizzare tanti variabili

Postdi ramset64 » 30/06/10 10:57

Chiarissimo, anzi cristallino !!! Grazie ad entrambi, ciaooo
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Re: [vba] memorizzare tanti variabili

Postdi ramset64 » 30/06/10 11:10

Anthony perdonami, ho appena provato il tuo ultimo suggerimento ma da sempre errore...
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Re: [vba] memorizzare tanti variabili

Postdi Anthony47 » 30/06/10 17:18

Pero' dovresti dire con quale codice, quando hai l' errore, quale errore, su quale istruzione...

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13903
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [vba] memorizzare tanti variabili

Postdi ramset64 » 30/06/10 17:36

Perdonami Anthony avevo provato la cosa velocemente dall'ufficio e mi dava un errore. Ho riprovato con più calma ed ho capito che l'errore era dovuto ad altro, ovviamente il tuo suggerimento è corretto. Chiedo venia.... grazie, ciaoo
ramset64
Utente Senior
 
Post: 396
Iscritto il: 29/10/08 10:41
Località: Torino

Re: [vba] memorizzare tanti variabili

Postdi maxmula » 01/07/10 14:12

Anthony47 ha scritto:Un vettore deve essere allocato in memoria prima di essere utilizzato, quindi devi impostarne la dimensione su un valore sufficiente per l' uso che ne devi fare. Puoi pero' usare ReDim per dimensionare di volta in volta il vettore alla dimensione che ti serve, avendo cosi' una migliore gestione di memoria. Nell' esempio che avevi fatto:
Codice: Seleziona tutto
Dim Miovalore()
'. . .
Redim Miovalore(100)
For I=1 to 100
'. . .

Ciao.



...E se invece non hai proprio la minima idea di quanti siano i valori da inserire, si può fare così:

Codice: Seleziona tutto
    Dim miovalore ()
    CONTEGGIO = 0
    CHECK = True
    While Check = True
         CONTEGGIO=CONTEGGIO+1
         ReDim Preserve miovalore (CONTEGGIO)
         miovalore(UBound(miovalore)) =   x     ' [valore da assegnare].
         'Usiamo UBound, in modo che il tutto funzioni regolarmente sia che l'array inizi dalla posizione 0 che da 1
         CHECK = VERIFICA_COND      ' VERIFICA_COND: funzione che restituirà True se la condizione è verificata... oppure altro se non lo è.
    Wend

' Attenzione a non entrare in loop infinito (se CHECK sempre = True)... ;-)




HTH,
MAx
Avatar utente
maxmula
Utente Senior
 
Post: 965
Iscritto il: 18/08/04 18:28
Località: N44°59'45 E09°00'34

Re: [vba] memorizzare tanti variabili

Postdi Flash30005 » 01/07/10 15:27

L'argomento è sicuramente interessante ma sono convinto che posso dimensionare un vettore anche con valore 100000
dim MioVett(1000000)
e poi fare un ciclo for... next solo da 1 a 3 attribuendo a soli 3 vettori i valori
non credo che questo vada ad inficiare molta memoria
o sbaglio?
ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [vba] memorizzare tanti variabili

Postdi maxmula » 01/07/10 17:01

In effetti coi computer moderni la quantità di memoria occupata potrebbe non essere più un problema.
Nel tuo caso, se la memoria non m'inganna, verrebbero allocati per il tuo array:

    4*32 bit (lunghezza del dato di tipo Variant, dal momento che non hai specificato nulla)
    * 1000000 di posizioni

il che produce un totale di 128.000.000 di bit (alias 16.000.000 di byte)... un po' tantini per poi usare solo 3 locazioni come Integer...

Diciamo che il fatto che sia o no un problema... dipende molto da quanta memoria hai a disposizione ... e da quanta ne richiedono gli altri processi che sono in azione sulla macchina.

Ciao,
MAx
Avatar utente
maxmula
Utente Senior
 
Post: 965
Iscritto il: 18/08/04 18:28
Località: N44°59'45 E09°00'34

Re: [vba] memorizzare tanti variabili

Postdi Flash30005 » 01/07/10 21:36

Beh,
se è così...
Potrebbero essere "tantini"
ma appena avrò un attimo di tempo farò delle prove
1) con tre vettori dichiarati e tre assegnati
2) con 1000000 di vettori dichiarati e tre assegnati
e verificherò eventuali sostanziali differenze

Ciao
Flash
Win7 + Office 2010 Ita
"Fotografica" al servizio dell'immagine

Ottime opportunità di lavoro (part-time o full-time) con guadagni immediati. Info in MP
Avatar utente
Flash30005
Moderatore
 
Post: 8460
Iscritto il: 27/09/07 11:44
Località: Roma +o-

Re: [vba] memorizzare tanti variabili

Postdi Anthony47 » 02/07/10 00:42

Bisogna cercare un compromesso: Redim con Preserve consuma cpu, Miovett(100000) consuma memoria.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13903
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: [vba] memorizzare tanti variabili

Postdi maxmula » 02/07/10 10:07

Anthony47 ha scritto:Bisogna cercare un compromesso: Redim con Preserve consuma cpu, Miovett(100000) consuma memoria.

Ciao


Giusta & Saggia (come sempre) l'osservazione! :)
Ciao!
MAx
Avatar utente
maxmula
Utente Senior
 
Post: 965
Iscritto il: 18/08/04 18:28
Località: N44°59'45 E09°00'34


Torna a Applicazioni Office Windows


Topic correlati a "[vba] memorizzare tanti variabili":


Chi c’è in linea

Visitano il forum: Nessuno e 7 ospiti