Newsgroup: it.comp.lang.visual-basic
Titolo: Variabili globali.

Ciao ragazzi,
    sto facendo un programmino per VB Excel e non riesco a far vedere da
tutti i moduli e da tutte le routine, finché è aperto il file di Excel, una
varibile di tipo stringa
Ho impostato:
(This workbook)
Option Explicit
Public Extension As String
e nell'eevento workbook_open l'ho inizializzata: Extension = "cmg".
Quando chiamo una form che in una textbox che fa uso di Extension e dovrebbe
farmi vedere il suo valore,  posizionando il mouse sulla variabile VB mi
dice che ha valore nullo ( "" ).
Imposto male la visibilità della variabile o cosa.
Io vengo da programmazione classica tipo Pascal e C. Sta programmazione ad
eventi è così drammatica per quelli come me? :-)
Ciao Ale.

Forse non ho detto che non vorrei usare le celle di un foglio (seppur
nascosto) di Excel per memorizzare informazioni "visibili" a tutte le
routine, ma gestire appunto con variabili tradizionali. In questo caso non
dovrei avere problemi.
Ciao Ale.

> "S" [...]:

    La questione "drammatica", in questo caso, non e' tanto quella degli
eventi quanto quella degli oggetti.
    Considera che ThisWorkbook e' un modulo di classe (Come anche Foglio1
... FoglioN) quindi quel tuo:
    Public Extension As String
puoi vederlo, e trattarlo, come una proprieta' di lettura/scrittura della
classe ThisWorkbook. Potrai quindi assegnarle un valore:
    ThisWorkbook.Extension = ...
o leggerne il valore, per esempio:
    Debug.Print ThisWorkbook.Extension
--
Ciao.
Maurizio
--------
?SPQR(C)
 X
--------

     Debug.Print ThisWorkbook.Extension
Allora quanto hai detto funziona, cioè usando il modulo di classe
ThisWorkBook e definendo Estensione in <generale> <dichiarazioni variabili>
come stringa riesco ad usarla in tutti i punti del programma e così anche
Grafico As Integer.
Allora mi sono detto: "Creo un modulo di classe Variabili anzi V, per
abbreviare, ci piazzo tutte le variabili che voglio _globali_ ed ho risolto
i miei problemi!". Purtroppo dopo aver creato il modulo di classe "V" e aver
messo nelle dichiarazioni
prova as string
V.prova dà errore poiché mi dice che V è una variabile non definita.
a conferma di quanto dico, l'help che visualizza l'elenco delle "proprietà"
(mi sembra) mi fornisce Grafico ed Estensione ma non prova.
V ha qualche proprietà,che devo specificare, in meno rispetto a
ThisWorkbook?
In effetti V ha solo la proprietà "Instancing" mentre ThisWorkBook una marea
tranne "Instancing"
Spero che nella mia ignoranza su VBA mi sia espresso bene e ti ringrazio
ancora delle delucidazioni.
Ciao Alessadnro.

Ho trovato un documento nel sito microsoft che dovrebbe spiegare i moduli di
classe per VBA.
Ciò che mi stupisce è che l'articolo è redatto come se chi scrivesse non
facess epaerte di microsoft. Si dice che l'help in linea non è molto chiaro
e neanche i testi di riferimento lo sono. Ma cos'è Microsoft contro
Microsoft? :-)
http://www.microsoft.com/italy/office/previous/2000/esperti/moduli_classe/
Ciao Ale.

 
http://www.microsoft.com/italy/office/previous/2000/esperti/moduli_classe/


 V.prova dà errore poiché mi dice che V è una variabile non definita.
    E tu definiscila:
    Dim V As ...
    Set V = New ...
    ...
    Set V = Nothing
[...]



Non ti preoccupare!! Io ho cominciato con il Pascal e con il VB mi trovo
benissimo (e continuo a programmare anche in Pascal). Devi solo capire che
il Pascal funziona in modo 'sequenziale', cioè segue le righe di istruzioni
una dopo l'altra, mentre il VB funziona soprattutto ad eventi, cioè ad ogni
evento vengono eseguite le istruzioni ad esso relative. Cmq questo passaggio
non è impossibile!
Per quanto riguarda la variabile, usa un modulo in cui dichiarerai la tua
variabile. In questo modo è accessibile da ogni parte del foglio di Excel.
Buon lavoro!
-Ciao-
-Luca450Mhz-