Risultati da 1 a 6 di 6

Discussione: A cosa serve "svuotare" le variabili?



  1. #1
    L'avatar di Lcbsm
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    Italia
    Messaggi
    46
    Versione Office
    Office 2013
    Likes ricevuti
    0
    Likes dati
    21

    A cosa serve "svuotare" le variabili?

    Ciao a tutti, spesso vedo in giro sub che, alla fine, presentano istruzioni come queste:

    Codice: 
    Set rng = Nothing
    cont = 0
    Qual è l'utilità di "svuotare" le variabili? Il codice ne guadagna in efficienza?

    Grazie!

  2. #2

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    45
    Messaggi
    2801
    Versione Office
    Excel 2013
    Likes ricevuti
    1020
    Likes dati
    977
    Per liberare risorse al PC che rimarrebbero occupate

  3. I seguenti utenti hanno dato un "Like"


  4. #3

    L'avatar di scossa
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Verona Provincia
    Età
    57
    Messaggi
    1011
    Versione Office
    .
    Likes ricevuti
    365
    Likes dati
    0
    Citazione Originariamente Scritto da Lcbsm Visualizza Messaggio
    Qual è l'utilità di "svuotare" le variabili? Il codice ne guadagna in efficienza?
    Ciao (ciao Rubik),

    premesso che
    Codice: 
    cont = 0
    non serve a svuotare la variabile ma solo ad assegnarle il valore 0, quindi non libera risorse e quell'istruzione potrebbe avere un senso se cont fosse una variabile statica o pubblica e la si volesse valorizzare prima di uscire dalla sub.

    Quindi la domanda riguarda solo istruzioni simili a
    Codice: 
    Set rng = Nothing
    cioè le sole variabili che rappresentano un "oggetto" (all'interno del codice troverai un'istruzione del tipo
    Codice: 
    Set miaVariabileOggetto = Oggetto
    dove oggetto può essere ad esempio un range, un foglio o qualsiasi altro oggetto).

    Perché alcuni (io per primo) usano "distruggere" queste variabili?
    Fondamentalmente perché la garbage-collection di Excel non è affidabile al 100% e soprattutto in caso di codici complessi, che magari istanziano altre applicazioni, le conseguenze di un fallimento nella loro distruzione potrebbero essere disastrose.
    Bye!
    scossa
    scossa's web site
    ___
    Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)

  5. I seguenti utenti hanno dato un "Like"


  6. #4

    L'avatar di Rubik72
    Clicca e Apri
    Data Registrazione
    Dec 2015
    Località
    Cosenza
    Età
    45
    Messaggi
    2801
    Versione Office
    Excel 2013
    Likes ricevuti
    1020
    Likes dati
    977
    ciao @Scossa
    Ricordiamo che anche le matrici possono essere "distrutte"
    Codice: 
    Dim Matrix(10)
    Dim i As Integer
    
    For i=0 to 10
        Matrix(i) = i
    Next
    
    
    Erase Matrix()

  7. I seguenti utenti hanno dato un "Like"


  8. #5

    L'avatar di scossa
    Clicca e Apri
    Data Registrazione
    Jul 2015
    Località
    Verona Provincia
    Età
    57
    Messaggi
    1011
    Versione Office
    .
    Likes ricevuti
    365
    Likes dati
    0
    Citazione Originariamente Scritto da Rubik72 Visualizza Messaggio
    ciao @Scossa
    Ricordiamo che anche le matrici possono essere "distrutte"
    Giusta osservazione, ma ha senso farlo solo per le matrici dinamiche, cioè dichiarate come Dim Matrix(), e non per le matrici statiche come nel tuo esempio.
    Inoltre, la garbage collection delle matrici funziona correttamente (non ho trovato letteratura di problemi inerenti la loro mancata distruzione esplicita), per cui l'istruzione erase per liberare memoria (matrice dinamica) è utile se usata nel mezzo del codice; in uscita provvede la g.c..
    Bye!
    scossa
    scossa's web site
    ___
    Se tu hai una mela, e io ho una mela, e ce le scambiamo, allora tu ed io abbiamo sempre una mela per uno. Ma se tu hai un'idea, ed io ho un'idea, e ce le scambiamo, allora abbiamo entrambi due idee. (George Bernard Shaw)

  9. I seguenti utenti hanno dato un "Like"


  10. #6
    L'avatar di Lcbsm
    Clicca e Apri
    Data Registrazione
    Mar 2016
    Località
    Italia
    Messaggi
    46
    Versione Office
    Office 2013
    Likes ricevuti
    0
    Likes dati
    21
    Grazie mille, tutto chiaro!

Discussioni Simili

  1. [Risolto] Ordinare con la funzione "piccolo"..ma "portandosi dietro" anche altri dati affiancati
    Di mauri73 nel forum Domande su Excel in generale
    Risposte: 13
    Ultimo Messaggio: 05/02/17, 14:57
  2. [Risolto] Come leggere la seguente formula =SE.ERRORE(INDIRETTO("'"&A1&"'!K1";1);""))
    Di sitolofi nel forum Domande su Excel in generale
    Risposte: 5
    Ultimo Messaggio: 20/12/16, 14:54
  3. >Come estrappolare la somma "automatica" di un DB con funzione "FILTRO"<
    Di tk71 nel forum Domande su Excel in generale
    Risposte: 1
    Ultimo Messaggio: 11/06/16, 11:44
  4. [Risolto] Codice non funzionante dopo il passaggio da "Windows" a "Mac"...
    Di joondeep nel forum Foglio di calcolo su altre Piattaforme
    Risposte: 13
    Ultimo Messaggio: 12/03/16, 21:09
  5. Collegamento "foglio elenco" e "fogli singoli"
    Di Maurizio76 nel forum Domande su Excel in generale
    Risposte: 7
    Ultimo Messaggio: 23/11/15, 10:14

Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •