Dichiarazione Variabili - accorgimenti

 

Non molti sanno che quando in una istruzione in codice vb (e quindi anche Vba) si usa assegnare spazio in memoria con l'istruzione Set a delle variabili, eseguendo l'istruzione, si occupano spazi (indirizzi di..) memoria del computer (RAM), e che quando l'istruzione è arrivata alla fine (End Sub), questi spazi in memoria non vengono "liberati" "scaricati" (se non con lo spegnimento del computer) dalle variabili che si accumulano e continuano ad occupare spazi di memoria. Esiste un'istruzione che si può usare, e che serve a liberare  la memoria dalle variabili prima create. Facciamo un esempio, vediamo una macro in cui si usa una variabile per assegnare un valore che potrà cambiare:

Sub Esempio()

Dim X     'in assenza del "tipo" di variabile, il codice interpreta la variabile come Variant

Set X = Range("A1").Value  'X è la variabile contenente il dato della cella A1

...seguono le istruzioni

End Sub

Bene, è sufficiente inserire prima di "End Sub" questa riga:

Set X = Nothing

e lo spazio in memoria occupato dalla variabile X sarà cancellato. L'istruzione andrà ripetuta per tutte le variabili caricate nella routine. Un'altro accorgimento, se si lavora con le UserForm, visto che anche l'apertura di una form costringe il computer a "caricare" in memoria tutti i dati che riguardano la Form stessa (compreso gli "oggetti" inseriti (TextBox, CommandButton, ecc.)) sarà quella di usare la stessa istruzione vista sopra, ma per azzerare la form dalla memoria. Se si chiude la form con in classico "UnLoad Me", è opportuno scrivere una riga in più di codice: Set UserForm1 = Nothing  prima di End Sub. Oppure uscire con l'istruzione "End" (anzichè UnLoad Me) prima di "End Sub", e questa istruzione provvede da sola a chiudere la form ed azzerare la form dalla memoria.