Una variabile dichiarata
in testa a un Modulo (prima di Sub o Function)
tramite Dim e' visibile in tutto il codice del Modulo e mantiene il suo valore fino al "ripristino" del vba (il tasto quadrato visibile nella barra degli strumenti standard del vba) o al clear della variabile.
Una variabile
dichiarata tramite Public in testa a un Modulo Standard e' visibile in tutto il codice del Progetto, e mantiene il suo valore come nel caso precedente.
Lo puoi testare con questo codice:
Nel primo Modulo standard inizialmente vuoto inserisci:
- Codice: Seleziona tutto
Dim cippa As Long 'Visibile nel Modulo
Sub uno()
If cippa = 0 Then
cippa = cippa + 1
Beep
End If
End Sub
Sub due()
If cippa > 0 Then
Beep
End If
End Sub
Sub Dieci()
If Pippa > 0 Then
Beep
End If
End Sub
Crei un secondo Modulo standard e vi inserisci:
- Codice: Seleziona tutto
Public Pippa As Long 'Visibile nel Progetto
Sub tre()
If cippa > 0 Then
Beep
End If
End Sub
Sub Quatt()
If Pippa = 0 Then
Pippa = 10
Beep
End If
End Sub
Esegui piu' volte la Sub Uno:
-la prima volta fara' Beep; le volte successive non piu'
Esegui poi la Sub Due
-fara' beep tutte le volte
Vai su Modulo2 ed esegui la Sub Tre:
-non sentirai mai il beep perche' l'istruzione
If cippa > 0 Then fa riferimento a una variable locale alla Sub Tre
Esegui piu' volte la Sub Quatt:
-la prima volta fara' Beep, poi non piu'
Vai su Modulo1 ed esegui la Sub Dieci:
-fara' beep tutte le volte
Il tasto "Ripristina" cancella tutto, anche Cippa e Pippa
Ovviamente puoi azzerare da vba una variabile di questo tipo assegnandole il valore di default.
Es
Cippa = 0 (se Cippa di tipo numerico),
myPassw = "" (se myPassw di tipo Stringa)
Ciao