Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

passaggio variabile tra Sub e Workbook

92 views
Skip to first unread message

info1

unread,
Jun 19, 2008, 10:33:43 AM6/19/08
to
Buon giorno a tutti.
In: Private Sub Workbook_Open(), lancio l'esecuzione ( con:.... .show) di
una Sub, che assegna un valore alla variabile pippo.
Di seguito vorrei utilizzare tale variabile nella Private Sub.... di
partenza.
La cosa non funziona premettendo: Public pippo.
Ringrazio se qualcuno mi da un consiglio.
Saluti.

r

unread,
Jun 19, 2008, 11:27:01 AM6/19/08
to

"info1" ha scritto:

.show? per lanciare una sub?
puoi postare il codice ...
per far decollare una sub all'avvio potresti
chiamarla auto_open ...
ma la tua domanda non mi è chiara, quindi
aspettiamo il codice.
ciao
r

info1

unread,
Jun 19, 2008, 12:22:48 PM6/19/08
to
Come ho scritto, ....show serve a lanciare una Sub, ma non è quello il mio
problema.
Il mio problema è che quando questa Sub è terminata voglio utilizzare pippo,
da lei creata, nella: Private Sub Workbook_Open(), nella quale c'è
l'istruzione .....show.
Ma se vogliamo il problema può essere schematizzato in un altro modo, e
cioè: è possibile passare il valore di "pippo" generato in una "Sub" ad una
"Private Sub Workbook_Open()".
Ho provato premettendo l'istruzione "Public pippo" e non funziona (mentre
funziona tra due Sub).
Grazie per l'attenzione.

"r" <r...@discussions.microsoft.com> ha scritto nel messaggio
news:906B6757-7A9C-4AF0...@microsoft.com...

r

unread,
Jun 19, 2008, 1:35:00 PM6/19/08
to

"info1" ha scritto:

non vedo ancora il tuo codice ...
sarebbe bene postarlo.
ciao
r

Mauro Gamberini

unread,
Jun 19, 2008, 2:44:33 PM6/19/08
to
> Il mio problema è che quando questa Sub è terminata voglio utilizzare
> pippo,
> da lei creata, nella: Private Sub Workbook_Open(), nella quale c'è
> l'istruzione .....show.
>

Di passaggio da queste terre,
in possesso di una nuova sfera cristallina,
vediamo come va....

La sfera immagina(ah, la fantasia...) che Show ti serva
per *mostrare* una UserForm.

Quindi, la sfera immagina(ma vedo non bene, si appanna)
che all'interno della UserForm tu abbia una Sub
che genera un valore.
Puoi esporlo tramite una proprietà pubblica creata ad hoc,
tramite un campo pubblico, oppure ti crei
una variabile pubblica in un modulo e fai in
modo che la Sub vada a scriverci. Poi la
variabile sarà visibile da *tutto* il programma,
Workbook_Open() compreso.

Se la sfera ha fallito, ti chiedo scusa.
Tu però, un po' di codice al povero r potresti postalo...

--
---------------------------
Mauro Gamberini
http://www.riolab.org/


info1

unread,
Jun 20, 2008, 3:30:53 AM6/20/08
to
Scusa ma ieri sera non ho fatto a tempo a risponderti.
Riguardo al Sw, ho solo fatto delle prove di fattibilità per le quali in
ThisWorkbook ho:

Public pippo
Private Sub Workbook_Open()
'........
UserForm1.Show
aa = pippo
'........
End Sub

mentre la UserForm1 è:

Private Sub CommandButton1_Click()
pippo = TextBox1.Text
'.........
End Sub

Private Sub TextBox1_Change()

End Sub

Private Sub UserForm_Click()

End Sub

Se opero tra una Sub in un "Modulo" e una UserForm, lanciando l'esecuzione
della Sub vedo pippo in aa (naturalmente se in pippo è stato immesso
qualcosa), mentre in questo caso in aa vedo vuoto.
Ti ringrazio se mi dai qualche consiglio.
Ciao.


"r" <r...@discussions.microsoft.com> ha scritto nel messaggio

news:54C62C14-2454-4B68...@microsoft.com...

Norman Jones

unread,
Jun 20, 2008, 4:47:34 AM6/20/08
to
Ciao Info,

=============


Scusa ma ieri sera non ho fatto a tempo a risponderti.
Riguardo al Sw, ho solo fatto delle prove di fattibilità per le quali in
ThisWorkbook ho:

Public pippo
Private Sub Workbook_Open()
'........
UserForm1.Show
aa = pippo
'........
End Sub

mentre la UserForm1 è:

Private Sub CommandButton1_Click()
pippo = TextBox1.Text
'.........
End Sub

Private Sub TextBox1_Change()

End Sub

Private Sub UserForm_Click()

End Sub

Se opero tra una Sub in un "Modulo" e una UserForm, lanciando l'esecuzione
della Sub vedo pippo in aa (naturalmente se in pippo è stato immesso
qualcosa), mentre in questo caso in aa vedo vuoto.
Ti ringrazio se mi dai qualche consiglio.
Ciao.

=============

Prova a spostare la variabile Pippo dal
modulo ThisWorkbook alla testa di un
modulo standard:

Public Pippo As String

A questo proposito, vedi "Variabile pubblica"
e "Visibilita' di una variabile" nella guida di
VBA.

Inoltre, ti consiglierei sempre di utilizzare la
dichiarazione:

Option Explicit

alla testa di *ogni* modulo.

Per inserire, automaticamente, la dichiarazione
Option Explicit alla testa di ogni modulo di ogni
nuovo file, prova:

Menu | Strumenti | Opzioni | Editor |
Spunta: Dichiarazioni di variabili obbligatoria
OK

(Menu | Tools | Options | Editor |
Require Variable Declaration)

Se avessi utilizzato questa dichiarazione,
avresti riscontrato l'errore "Variabile non definita"
nella tua routine CommandButton1_Click(),
perche' la variabile Pippo non sarebbe stato
risconosciuta.

---
Regards.
Norman

Maurizio Borrelli

unread,
Jun 20, 2008, 5:24:42 AM6/20/08
to
"info1" wrote in message
news:ePFcVeq0...@TK2MSFTNGP02.phx.gbl:

> Riguardo al Sw, ho solo fatto delle prove di fattibilità per le quali in
> ThisWorkbook ho:
> Public pippo
> Private Sub Workbook_Open()
> '........
> UserForm1.Show
> aa = pippo
> '........
> End Sub
> mentre la UserForm1 è:
> Private Sub CommandButton1_Click()
> pippo = TextBox1.Text
> '.........
> End Sub

> Se opero tra una Sub in un "Modulo" e una UserForm, lanciando l'esecuzione
> della Sub vedo pippo in aa (naturalmente se in pippo è stato immesso
> qualcosa), mentre in questo caso in aa vedo vuoto.

Ciao info1.

Se ti interessa il valore di TextBox1 alla chiusura di UserForm1 puoi
anche fare a meno di deprecabili variabili pubbliche.

Un esempio sintetico:

' ThisWorkbook - Modulo di classe dell'oggetto Workbook
'
Option Explicit

Private Sub Workbook_Open()
Dim frm As UserForm1

Set frm = New UserForm1
frm.Show vbModal
MsgBox frm.TextBox1.Value
Set frm = Nothing

End Sub

Un esempio piu` concreto:

' ThisWorkbook - Modulo di classe dell'oggetto Workbook
'
Option Explicit

Private Sub Workbook_Open()
Dim frm As UserForm1
Dim vntRet As Variant

Set frm = New UserForm1
frm.Show vbModal
vntRet = frm.RetVal
Set frm = Nothing
If Not IsEmpty(vntRet) Then
MsgBox vntRet
End If
End Sub

' UserForm1 - Modulo di classe dell`oggetto UserForm1
'
Option Explicit

Private mvntRet As Variant

Public Property Get RetVal() As Variant
RetVal = mvntRet
End Property

Private Sub cmdCancel_Click()
Me.Hide
End Sub

Private Sub cmdOk_Click()
With Me
mvntRet = .TextBox1.Value
.Hide
End With
End Sub

Private Sub UserForm_QueryClose(ByRef Cancel As Integer _
, ByRef CloseMode As Integer)
Cancel = True
Me.Hide
End Sub

(Facci sapere se e eventualmente come hai risolto. Grazie!)

--
Ciao!
Maurizio Borrelli [Microsoft MVP Office System]
http://www.riolab.org/


r

unread,
Jun 20, 2008, 5:43:01 AM6/20/08
to

"Mauro Gamberini" ha scritto:


> Di passaggio da queste terre,
> in possesso di una nuova sfera cristallina,
> vediamo come va....

fossi in te la terrei buona :-)
ciao
r

Norman Jones

unread,
Jun 20, 2008, 5:47:55 AM6/20/08
to
Ciao Maurizio,

=============


Se ti interessa il valore di TextBox1 alla chiusura di UserForm1 puoi
anche fare a meno di deprecabili variabili pubbliche.

[...]
=============

Le variabile pubbliche non sono mai
deprecabili!

L'uso errato delle variabili pubbliche
può essere disapprovato ma cio' non
è motivo per condannare le variabili
stessi; any tool may be dangerous in
the wrong hands!

---
Regards.
Norman

Maurizio Borrelli

unread,
Jun 20, 2008, 6:12:52 AM6/20/08
to
"Norman Jones" wrote in message
news:9EB5E3F7-CABF-455B...@microsoft.com:

> =============
> Se ti interessa il valore di TextBox1 alla chiusura di UserForm1 puoi
> anche fare a meno di deprecabili variabili pubbliche.
> [...]
> =============
> Le variabile pubbliche non sono mai
> deprecabili!

Mai dire mai. :-)

Tuttavia la mia frase NON va intesa come:

"fare a meno delle variabili pubbliche, le quali sono deprecabili"

bensi`:

"fare a meno delle variabili pubbliche, quando usate in modo
deprecabile"

Cioe` quasi sempre. :-)

> L'uso errato delle variabili pubbliche
> può essere disapprovato ma cio' non
> è motivo per condannare le variabili
> stessi; any tool may be dangerous in
> the wrong hands!

Rispettabilissima opinione.

Io preferisco evitarle e considerarle *generalmente* deprecabili.

Tuttavia deprecabile non vuol dire proibito.

E` pero` un fatto che usare variabili pubbliche espone al rischio insito
nella loro propria natura. Perche' rischiare? Chi ce lo fa fare?

Norman Jones

unread,
Jun 20, 2008, 6:24:34 AM6/20/08
to
Ciao Maurizio,

--
=============
=============

---
Regards.
Norman
"Maurizio Borrelli" <maurizio...@freepass.it> wrote in message
news:uWya34r0...@TK2MSFTNGP02.phx.gbl...

Maurizio Borrelli

unread,
Jun 20, 2008, 6:38:13 AM6/20/08
to
"Norman Jones" wrote in message
news:eQAEe$r0IHA...@TK2MSFTNGP05.phx.gbl:
> "Maurizio Borrelli" wrote in message
> news:uWya34r0...@TK2MSFTNGP02.phx.gbl...

[...]
> =============
> =============

Ciao Norman.

Questa credo sia la prima volta che ti lascio senza parole.

info1

unread,
Jun 20, 2008, 6:58:38 AM6/20/08
to
La tua sfera cristallina è migliore di quella della "Maga Magò"!!
Ho seguito le tue indicazioni in questo modo (... e funziona):

Private Sub Workbook_Open()
Modulo1.prova
aa = Modulo1.pippo
End Sub

Public pippo (è in Modulo1)
Sub prova()
UserForm1.Show
End Sub

(di seguito il codice di UserForm1)


Private Sub CommandButton1_Click()
pippo = TextBox1.Text

Unload Me
End Sub

Private Sub TextBox1_Change()
End Sub

Private Sub UserForm_Click()
End Sub

In pratica Modulo1 fa da tramite ( nel mio linguaggio "primitivo").
Il tutto mi serve per recuperare una Password e controllarla in fase di
apertura di una applicazione Excel.
L'applicazione, che ho realizzato anche con alcuni Vs. suggerimenti, è:
http://pws.prserv.net/studiosit/QFDNO.xls alla quale si può arrivare dal
sito http://pws.prserv.net/studiosit .
Ciao e grazie.


"Mauro Gamberini" <maurogsc...@RIMUOVEREaliceposta.it> ha scritto nel
messaggio news:e0MpGyj0...@TK2MSFTNGP02.phx.gbl...

info1

unread,
Jun 20, 2008, 7:01:32 AM6/20/08
to
Ho fatto come mi suggerisci e come spiego nella risposta a Mauro Gambineri.
Grazie e saluti.

"r" <r...@discussions.microsoft.com> ha scritto nel messaggio

news:AAE715CC-B7EB-423D...@microsoft.com...

Norman Jones

unread,
Jun 20, 2008, 7:07:23 AM6/20/08
to
Ciao Maurizio.

=============
>> Se ti interessa il valore di TextBox1 alla chiusura di UserForm1 puoi
>> anche fare a meno di deprecabili variabili pubbliche.
>> [...]

> Le variabile pubbliche non sono mai
> deprecabili!

Mai dire mai. :-)
============

Lo faccio quasi mai!

============


Tuttavia la mia frase NON va intesa come:

"fare a meno delle variabili pubbliche, le quali sono deprecabili"

bensi`:

"fare a meno delle variabili pubbliche, quando usate in modo
deprecabile"

=============

Qui posso concordare tranquillamente.

=============
Cioe` quasi sempre. :-)
=============

Ancora una volta posso concordare, a
patto che intendevi: :occasionalmente ed
quando utilizzate da chi abbia una
conoscenza insufficiente.

=============


> L'uso errato delle variabili pubbliche
> può essere disapprovato ma cio' non
> è motivo per condannare le variabili
> stessi; any tool may be dangerous in
> the wrong hands!

Rispettabilissima opinione.

Io preferisco evitarle e considerarle *generalmente* deprecabili.

=============

Generalmente, utilizzate con sapienza, le
trovo utilissime!

=============


Tuttavia deprecabile non vuol dire proibito.

=============

Spero proprio di no!

=============


E` pero` un fatto che usare variabili pubbliche espone al rischio insito
nella loro propria natura. Perche' rischiare? Chi ce lo fa fare?

=============

Come dicevo precedentemente, qualunque
strumento può essere rischioso quando
utilizzato in *modo* deprecabile; comunque,
le variabili pubbliche, utilizzate giudiziosamente
e consapevolemente, sono utilissime e mi fa
piacere approfittarne quando possibile!

La mia macchina potrebbe essere rischiosa,
particolarmente se fosse giudata da qualcuno
meno capace di me, ma non vorrei *mai*
pensarne come deprecabile! -:))

---
Regards.
Norman

Mauro Gamberini

unread,
Jun 20, 2008, 7:05:46 AM6/20/08
to
> Public Property Get RetVal() As Variant
>

Era la prima delle soluzioni proposte dalla mia sfera.
Vuoi vedere che funziona....

r

unread,
Jun 20, 2008, 7:08:00 AM6/20/08
to

"info1" ha scritto:

ciao info
gestire con una inputbox?
no eh....
:-)
ciao
r

info1

unread,
Jun 20, 2008, 7:09:53 AM6/20/08
to
Ho risolto come dico nella risposta a Mauro Gambineri, tuttavia adesso
voglio adeguare la soluzione ai suggerimenti che mi dai, in particolare
all'Option Explicit. Ho bisogno di queste indicazioni per cercare di
migliorare.
Ciao e grazie.

"Norman Jones" <norma...@wherforartthou.com> ha scritto nel messaggio
news:O6vwQJr0...@TK2MSFTNGP03.phx.gbl...

info1

unread,
Jun 20, 2008, 7:26:28 AM6/20/08
to
Non è la prima volta che mi dai dei suggerimenti (spero di usare la parola
giusta perchè tempo addietro uno del Vs. gruppo mi ha fatto notare che non
da dei consigli ma delle indicazioni) e ti ringrazio molto perchè mi fanno
vedere dei modi professionali per affrontare e risolvere delle esigenze e
questo è per me molto importante. Non scherzo se dico che talvolta questi
suggerimenti non sono per mè facili in prima lettura ma mi impegno per
capirli.
Il problema per ora l'ho risolto come dico nella risposta a Mauro Gambineri
e sembra funzionare.
Grazie e un saluto.

"Maurizio Borrelli" <maurizio...@freepass.it> ha scritto nel messaggio
news:Opk$8dr0IH...@TK2MSFTNGP02.phx.gbl...

Mauro Gamberini

unread,
Jun 20, 2008, 7:37:39 AM6/20/08
to
> Private Sub Workbook_Open()
> Modulo1.prova
> aa = Modulo1.pippo
> End Sub
>
<cut>

Mi gira un po' la testa...

Al limite(ma proprio al limite):

Modulo1

Option Explicit

Public Pippo As String

Public Sub Prova()
UserForm1.Show
End Sub


Nella UserForm;

Private Sub CommandButton1_Click()
Pippo = TextBox1.Text
End Sub


In ThisWorkbook:

Private Sub Workbook_Open()
Dim aa As String
Call Prova
aa = Pippo
End Sub

Per favore leggi la risposta di Maurizio
e prova di capire il codice.
Se hai dubbi, riposta sempre in questo thread.

Maurizio Borrelli

unread,
Jun 20, 2008, 8:53:14 AM6/20/08
to
"Norman Jones" wrote in message
news:OOVHZXs0...@TK2MSFTNGP04.phx.gbl:

[...]


> Come dicevo precedentemente, qualunque
> strumento può essere rischioso quando
> utilizzato in *modo* deprecabile; comunque,
> le variabili pubbliche, utilizzate giudiziosamente
> e consapevolemente, sono utilissime e mi fa
> piacere approfittarne quando possibile!

[...]

Secondo questa logica si potrebbe dire che Option Explicit e` inutile
perche' "io non sbaglio mai a scrivere".

:-))

Fatta eccezione per le variabili oggetto, non esiste credo mai una *vera
e reale* necessita` di una variabile pubblica, ovvero di una variabile
il cui valore possa essere letto in qualsiasi punto del progetto *e
anche* scritto.

Generalmente la necessita` reale e` quella di lettura del valore, mentre
la scrittura va sottoposta a cautele e restizioni. Niente di meglio
quindi che sostituire una variabile pubblica con una proprieta` pubblica
di sola lettura, il cui valore possa essere scritto da una ben precisa
routine, a determinate condizioni:

' modEsempio - Modulo standard
'
Option Explicit

Private mvntEsempio As Variant

Public Property Get Esempio() As Variant
Esempio = mvntEsempio
End Property

Public Sub FaiQualcosa(ByVal Eventuale As Variant)
'...
mvntEsempio = ...
'...
End Sub

Maurizio Borrelli

unread,
Jun 20, 2008, 9:26:34 AM6/20/08
to
"info1" wrote in message
news:uC4I#hs0IH...@TK2MSFTNGP06.phx.gbl:
> "Maurizio Borrelli" ha scritto nel messaggio
> news:Opk$8dr0IH...@TK2MSFTNGP02.phx.gbl...

Ciao info1.

[...]


> Non è la prima volta che mi dai dei suggerimenti (spero di usare la parola
> giusta perchè tempo addietro uno del Vs. gruppo

Beccato! :-)

> mi ha fatto notare che non
> da dei consigli ma delle indicazioni) e ti ringrazio molto perchè mi fanno
> vedere dei modi professionali per affrontare e risolvere delle esigenze e
> questo è per me molto importante. Non scherzo se dico che talvolta questi
> suggerimenti non sono per mè facili in prima lettura ma mi impegno per
> capirli.

Puoi sempre domandare chiarimenti, perche' quando si posta del codice e`
perfettamente inutile spiegarlo tutto per filo e per segno in quanto ci
sono buone probabilita` di annoiare spiegando in dettaglio cio` che e`
ovvio per chi legge e si rischia invece di tralasciare cio` che invece
pare ovvio solo a chi scrive e pochi altri.

> Il problema per ora l'ho risolto come dico nella risposta a Mauro Gambineri

"Gambineri", eh?... Mi sa che questa la pagherai a caro prezzo, forse
persino piu` caro del canone RAI. :-)))

> e sembra funzionare.
> Grazie e un saluto.

Grazie a te del riscontro.

Norman Jones

unread,
Jun 20, 2008, 9:58:51 AM6/20/08
to
Ciao Maurizio,

=============


[...]
> Come dicevo precedentemente, qualunque
> strumento può essere rischioso quando
> utilizzato in *modo* deprecabile; comunque,
> le variabili pubbliche, utilizzate giudiziosamente
> e consapevolemente, sono utilissime e mi fa
> piacere approfittarne quando possibile!
[...]

Secondo questa logica si potrebbe dire che Option Explicit e` inutile
perche' "io non sbaglio mai a scrivere".

:-))
=============

Non sono d'accordo con la tua analogia!

Anzi, direi che potrei scrivere il mio codice
senza mai usare Option Explicit, ma non
vorrei farlo; nello stesso modo potrei evitare
l'uso delle varibile pubbliche ma, certamente,
non vorrei farlo!

=============


Fatta eccezione per le variabili oggetto, non esiste credo mai una *vera
e reale* necessita` di una variabile pubblica, ovvero di una variabile
il cui valore possa essere letto in qualsiasi punto del progetto *e
anche* scritto.

=============

Hai gia' fatto eccezione per le variabili
oggetto e io non avevo precisato alcun
tipo per le variabili.

Per quanto riguarda la possibilita di leggere
e scrivere un valore alla variabile, da qualunque
modulo del progetto, credo che sia uno dei
suoi grandi vantaggi! Ovviamente, non volendo
questa funzionalita', il programmatore giudizioso
utilizzerebbe una delle altre possibilita'

=============


Generalmente la necessita` reale e` quella di lettura del valore, mentre
la scrittura va sottoposta a cautele e restizioni. Niente di meglio
quindi che sostituire una variabile pubblica con una proprieta` pubblica
di sola lettura, il cui valore possa essere scritto da una ben precisa
routine, a determinate condizioni:

' modEsempio - Modulo standard
'
Option Explicit

Private mvntEsempio As Variant

Public Property Get Esempio() As Variant
Esempio = mvntEsempio
End Property

Public Sub FaiQualcosa(ByVal Eventuale As Variant)
'...
mvntEsempio = ...
'...
End Sub

=============

Credo che ci sia una distinzione significativa
fra quella che è necessario e quella che un
saggio programmatore potrebbe decidere di
fare; un artigiano esperto non si limita sempre
ad un singolo strumento.

Detto questo, accetto ben volontieri, che una
variabile possa spesso non essere la scelta
migliore e, talvolta, e da evitare come la peste
bubbonica.

Il mio punto e' semplicemente che trovo la
variabile pubblica utilissima e io non vorrei farne
a meno.

A questo punto, vorrei ritirarmi, ansioso che
non si arriva al punto di non capirci! -:)

---
Regards.
Norman

Maurizio Borrelli

unread,
Jun 20, 2008, 11:23:40 AM6/20/08
to
"Norman Jones" wrote in message
news:473EB5EE-F022-4A71...@microsoft.com:

> =============
> [...]
> > Come dicevo precedentemente, qualunque
> > strumento può essere rischioso quando
> > utilizzato in *modo* deprecabile; comunque,
> > le variabili pubbliche, utilizzate giudiziosamente
> > e consapevolemente, sono utilissime e mi fa
> > piacere approfittarne quando possibile!
> [...]
>
> Secondo questa logica si potrebbe dire che Option Explicit e` inutile
> perche' "io non sbaglio mai a scrivere".
>
> :-))
> =============
> Non sono d'accordo con la tua analogia!

Anche se non sei d`accordo l'analogia resta.

> Anzi, direi che potrei scrivere il mio codice
> senza mai usare Option Explicit, ma non
> vorrei farlo; nello stesso modo potrei evitare
> l'uso delle varibile pubbliche ma, certamente,
> non vorrei farlo!

E chi te lo impedisce? Sciatteria, pigrizia, mancanza di fantasia,
fretta... I motivi negativi per usarle sono tanti. Quelli positivi non
saprei quali siano, anche se immagino possano esistere.

> =============
> Fatta eccezione per le variabili oggetto, non esiste credo mai una *vera
> e reale* necessita` di una variabile pubblica, ovvero di una variabile
> il cui valore possa essere letto in qualsiasi punto del progetto *e
> anche* scritto.
> =============
> Hai gia' fatto eccezione per le variabili
> oggetto e io non avevo precisato alcun
> tipo per le variabili.

Ecco la tua solita deprecabile ;-) modalita` di conversazione. Come se
io finora avessi affermato qualcosa di diverso!

Quando io scrivo "grigio" tu ami sottolineare quanto tu non sia
d'accordo con la parte nera del mio grigio, ignorando bellamente la
parte bianca, ma io non ho scritto frasi *assolute* bensi` *relative*,
contenenti cioe` parole tipo "quasi", "generalmente", ecc. Frasi che
implicano il concetto stesso di *eccezione*.

Ecco perche' non ci capiremo mai. Perche' parliamo due lingue "mentali"
diverse. Perche' tu ami impiccare gli altri con le loro stesse parole
mentre a me piace ragionare e persino cambiare idea, alla fine, anche se
non e` questo il caso, per ora.

A proposito delle variabili oggetto dichiarate pubbliche, solo uno
sprovveduto potrebbe considerarle parte di questa conversazione.
Precisare che esse sono *evidentemente* cosa diversa e` solo un servizio
a chi legge.

Dato che tu sei tutto tranne che uno sprovveduto e` altrettanto evidente
che godi a ciurlare nel manico (spero ci sia questa nei tuoi dizionari
:-)

> Per quanto riguarda la possibilita di leggere
> e scrivere un valore alla variabile, da qualunque
> modulo del progetto, credo che sia uno dei
> suoi grandi vantaggi! Ovviamente, non volendo
> questa funzionalita', il programmatore giudizioso
> utilizzerebbe una delle altre possibilita'

Il programmatore giudizioso segue un paradigma, uno stile, un insieme di
norme che lui stesso, o il gruppo di cui fa parte, si da`. E` abbastanza
probabile che una di queste norme inviti espressamente a farne un uso
*estremamente moderato* o addirittura ne sconsigli l`uso.

Variables should always be declared with the smallest level of scope and
the shortest lifetime possible. [...] Only use Public as a last resort.
Public variables declared in standard modules are global and can be
changed by any piece of code throughout the entire project. This makes
debugging changes to their value very difficult. Global variables of
this sort should only be used in the context where they are set during
initialization of the program, then remain static for the rest of the
time the program executing.
Global variables should never be changed in one part of the program to
be retrieved in another part of the program. In such cases, you should
use parameters of procedures or properties of forms or objects to pass
the information. If there are more than 20 global variables in the
program, it is a warning sign that the program design is wrong.
(_Reddick VBA (RVBA) Coding Conventions_)

In general, it's a bad programming practice to use too many global
variables. If possible, you should limit yourself to using module-level
or local variables because they allow easier code reuse. If your modules
and individual routines rely on global variables to communicate with
each other, you can't reuse such code without also copying the
definitions of the involved global variables. In practice, however, it's
often impossible to build a nontrivial application without using global
variables, so my suggestion is this: Use them sparingly and choose for
them names that make their scope evident (for example, using a g_ or glo
prefix). Even more important, add clear comments stating which global
variables are used or modified in each procedure
(Balena, Francesco, _Programming Microsoft Visual Basic 6.0_)

info1

unread,
Jun 20, 2008, 12:14:12 PM6/20/08
to
Ho guardato l'"esempio concreto" che mi avevi inviato ed ho capito che
risolve tutti i miei problemi.
Evidentemente l'ho già adottato come mia soluzione e funziona tutto bene.
Non ho parole sufficienti per ringraziarti.
(((((((( in merito al "lapsus" .....dopo essermi cosparso il capo di cenere,
ho iniziato a mettere da parte i miei risparmi!!!)))))))
Ciao.


"Maurizio Borrelli" <maurizio...@freepass.it> ha scritto nel messaggio
news:ulemGlt0...@TK2MSFTNGP05.phx.gbl...

info1

unread,
Jun 20, 2008, 12:27:26 PM6/20/08
to
Hai ragione, ho guardato la risposta di Maurizio ed ho capito che risolve i
miei problemi in tutti gli aspetti perciň intendo adottarla.
Scusa l'errore che ho compiuto citando il tuo cognome che sovrapensiero ho
riportato come quello non molto diverso di un mio collega.
Grazie ancora e ciao, Gian


"Mauro Gamberini" <maurogsc...@RIMUOVEREaliceposta.it> ha scritto nel

messaggio news:ODSLNos0...@TK2MSFTNGP03.phx.gbl...

r

unread,
Jun 20, 2008, 6:27:00 PM6/20/08
to

ciao Maurizio, ciao Norman
è sempre un piacere sentirvi *litigare*
amichevolmente ...

non voglio entrare nel merito della
discussione ... solo fornire
(se può interessare) la mia personale
testimonianza/esperienza a riguardo ...

difficilmente utilizzo variabili pubbliche ...
quando mi è capitato ... spesso me ne
sono pentito ... a volte l'ho trovato conveniente
... sopratutto utilizzando una schema
del tipo (non ricordavo
dove l'avevo letto e Maurizio nel suo ultimo
intervento me l'ha rammentato ... dal buon
Balena):

Option Explicit
Public Type VariabiliGlobali
Nome As String
Cognome As String
DataDiNascita As Date
End Type
Public Glo As VariabiliGlobali

ciao
r

eliano

unread,
Jun 20, 2008, 10:00:02 PM6/20/08
to

"r" ha scritto:

Ciao Roberto e complimenti!
Questo si chiama rientrare sul tema o su i temi del NG.
Eliano

Norman Jones

unread,
Jun 21, 2008, 12:08:39 AM6/21/08
to
Ciao Maurizio,

===============


> [...]
> > Come dicevo precedentemente, qualunque
> > strumento può essere rischioso quando
> > utilizzato in *modo* deprecabile; comunque,
> > le variabili pubbliche, utilizzate giudiziosamente
> > e consapevolemente, sono utilissime e mi fa
> > piacere approfittarne quando possibile!
> [...]
>
> Secondo questa logica si potrebbe dire che Option Explicit e` inutile
> perche' "io non sbaglio mai a scrivere".
>
> :-))
> =============
> Non sono d'accordo con la tua analogia!

Anche se non sei d`accordo l'analogia resta.

===============

Puoi anche riperterla cento volte ma vale
ben poca - una analogia non valida è
sempre non valida!

=============


> Anzi, direi che potrei scrivere il mio codice
> senza mai usare Option Explicit, ma non
> vorrei farlo; nello stesso modo potrei evitare
> l'uso delle varibile pubbliche ma, certamente,
> non vorrei farlo!

E chi te lo impedisce? Sciatteria, pigrizia, mancanza di fantasia,
fretta... I motivi negativi per usarle sono tanti. Quelli positivi non
saprei quali siano, anche se immagino possano esistere.
=============

Allora vediamo un po! *Io* non ho alcun
problema con l'uso intelligente e giudizioso di una
variabile pubblica; *io* vedo dei motivi positivi
per l'uso di queste variabile. Infatti, se qualcuno di
noi abbia un problema con le variabili pubbliche,
sei tu che non vedi alcun motivo positivo; sei tu
che pensi che l'uso sia sinonimo con "Sciatteria,
pigrizia, mancanza di fantasia, fretta.." - forse, a
questo punto, tu permetteresti che aggiunga anche
stupidita' al tuo elenco di insulti, In ogni modo, stai
tranquillo, tornerò a questo punto ben presto!

Per il momento, a questo riguardo, vorrei ripetere
una frase saliente ed altamente pertinente dalla
*tua* citazione di Francesco Balena

------------
[...]


In practice, however, it's often impossible
to build a nontrivial application without using global
variables

[...]

In practica, pero', e' spesso impossibile creare una
applicazione significante (non banale) senza l'uso delle
variabili globale ...

(Balena, Francesco, _Programming Microsoft Visual Basic 6.0_)

---------

Tu pensi , allora,che, come nel mio caso, il
fatto che Francesco Balena prevede l'uso
legitimo e necessario delle variabili pubblicche
sia dovuto alla sua "sciatteria", la sua "pigrizia"
e "mancanza di fantasia", la sua "fretta" e,
insomma, la sua stupidita'? Oppure, vorresti
riservare tali insulti per me?

Ripeto che ho preso la citazione - come anche
gli insulti - dalla tua ultima risposta; io non ho
fatto altro che appendere una piccola traduzione
italiana al testo inglese di Francesco.

Ebbene, la tua posizione è chiarisima: sconti l'uso
delle variabili pubbliche perché tali uso indica


"Sciatteria, pigrizia, mancanza di fantasia, fretta..."

e perché, mentre sai tanti "motivi negativi", non
sapresti neanche un motivo positivo per l'uso di
queste variabili.

Immagini, quindi la mia stupefazione quando una
ricerca rapida dei tuoi post ha rivelato numerosi
casi del tuo uso di variabili pubbliche di tutti
tipi: String, Double, Boolean, Variant e Object.

Poiché non potevo pensare ad una stringa di
ricerca adatta - e perchè ero molto occupato,
potevo soltanto esaminare un numero molto
piccolo dei tuoi post; tuttavia credo che seguenti
esempi diano una visione d'insieme dei post e
penso che debbano essere di interesse:

'-------------->>
http://tinyurl.com/6h8q6d
macro stampato il

[...]
modMacro - Modulo standard
'
Option Explicit


Private Const mcPrintDateAddress = "A1"


Public OnMacroPrint As Boolean
[...]
<<'--------------

'-------------->>
cercare una stringa in tutti i fogli presenti in un file
http://tinyurl.com/5gt4rr

[...]
' Macros - Modulo Standard
'
Option Explicit


Public Const gcstrStartAddr = "C3"

[...]
<<'--------------


'-------------->>
utilizzo nomi range
http://tinyurl.com/5tnx2h

[...]
Cosi' bastera' fare un ciclo di tutti i Nomi del Foglio, o di tutti i
Fogli della Cartella di lavoro... e se cominciano per "nu_"... Chiaro il
concetto, no? Bastera' definire una Costante Pubblica in un Modulo
Standard del Progetto:


Public Const gcstrCleanPrefix = "nu_"


Quindi... Continui tu?
[...]
<<'--------------


'-------------->>
Numero progressivo in word
http://tinyurl.com/5zu977

[...]
Option Explicit


Public Const gcstrProjectName = "Preventivi"
Public Const gcstrCDPProtNumero = "ProtNumero"
Public Const gcstrCDPProtData = "ProtData"
[...]
<<'--------------


'-------------->>
Click e DblClick su Label
http://tinyurl.com/5kb7s5

[...]
Public g_chkClick As MSForms.CheckBox
Public g_blnDblClick As Boolean
Public g_lngTimerID As Long
[...]
<<'--------------


'-------------->>
io vorrei...
http://tinyurl.com/5788np

[...]
Option Explicit


Public Result As Boolean
Private m_blnStarted As Boolean
[...]
<<'--------------


'-------------->>
Aiuto!!!
http://tinyurl.com/58utu6

[...]
Option Explicit


Public Const g_strMacro1Name As String = "Macro1"
Public Const g_strMacro1Key As String = "a"
[...]
<<'--------------


'-------------->>
Errore VBscript per creare e riempire un foglio Excel
http://tinyurl.com/6znyuu

[...]
Public Const gc_strTitle = "Divisione?"
Public lngLine
[...]
<<'--------------


'-------------->>
Aggionramento di una Form
http://tinyurl.com/5myes6

[...]
Public Const gc_strMyName = "PDlgHideIf"
Const mc_strMyName = "MGlobal"

Public Const gc_lngWaitSecs = 10
[...]
<<'--------------


'-------------->>
Chiedo aiuto....Macro Excel
http://tinyurl.com/5oyzcg

[...]
Option Explicit

Public Const gc_strOnTimeProcedure As String = "Aggiorna"
Private Const mc_strOnTimeTimer As String = "00:05:00"
Public g_dtmOnTimeEarliestTime As Date
[...]
<<'--------------


'-------------->>
da word a excel
http://tinyurl.com/5ptryl

[...]
Option Explicit

Public Event DataChanged()

Public m_objWdDoc As Word.Document
Private m_strDatoreDiLavoro As String
[...]
<<'--------------

Inizialmente ho pensato che ci fosse un altro, con
tuo nome, ma senza la tua capacità di evitare
l'uso delle variabili pubbliche e, come me,
soffrendo dalla "sciatteria, pigrizia, mancanza di
fantasia, fretta..."'; qualcuno, insomma altretanto
stupido che me!

Poi, pero', ho dovuto scontare questa ipotesi
perché ho notato che anche lui era un MVP!
Mi sembrava poco probabile che ci possano
essere *due* MVP con lo stesso nome; il
primo essendo altamente intelligente e con la
capacita' innata di evitare l'uso delle variabili
pubbliche; l'altro essendo pigro, stupido e senza
la capacita' di evitare il frequente uso di queste
variabili senza alcun merito!

Spero, caro Maurizio, dal cuore, che tu possa
aiutarmi a risolvere questa enigma e che
possiamo rimuovere questo maledetto furfante
stupido che sta impersonandoti!

---
Regards.
Norman

Norman Jones

unread,
Jun 21, 2008, 12:23:22 AM6/21/08
to
Ciao R,,

=============

=============

Litigare?!

Credo proprio di no; al massimo, come
la mia moglie, credo che, talvolta, Maurizio
non mi capisca!

Comunque, ripensandoci, lui potrebbe
sempre essere *l'altro* Maurizio! :-)

---
Regards.
Norman

Norman Jones

unread,
Jun 21, 2008, 1:15:39 AM6/21/08
to

eliano

unread,
Jun 21, 2008, 8:22:00 PM6/21/08
to

"Norman Jones" ha scritto:

> Ciao R,,

[cut]


> Litigare?!
>
> Credo proprio di no; al massimo, come
> la mia moglie, credo che, talvolta, Maurizio
> non mi capisca!
>
> Comunque, ripensandoci, lui potrebbe
> sempre essere *l'altro* Maurizio! :-)
>

Ciao Norman.
Capita anmche nelle migliori famiglie che ci siano delle incomprensioni.:-))

*L'altro* Maurizio ??
Non so di chi tu stia parlando, a meno che tu non intenda dire che Maurizio,
oltre ad essere dotato di notevoli capacità tecniche, sia dotato anche di una
DOPPIA personalità.
Ho una coppia di amici (quasi) ai quali ho fatto recentemente un lavoro di
riorganizzazione dei loro database (lui psichiatra, la moglie psicologa) ai
quali chiederò lumi in proposito.
Saluti
Eliano

Maurizio Borrelli

unread,
Jun 22, 2008, 1:08:07 AM6/22/08
to
"r" wrote in message
news:4FB8B677-E4F7-456C...@microsoft.com:

> ... sopratutto utilizzando una schema
> del tipo (non ricordavo
> dove l'avevo letto e Maurizio nel suo ultimo
> intervento me l'ha rammentato ... dal buon
> Balena):
> Option Explicit
> Public Type VariabiliGlobali
> Nome As String
> Cognome As String
> DataDiNascita As Date
> End Type
> Public Glo As VariabiliGlobali

Ciao r.

Infatti. Questo metodo e` indicato proprio nella frase immediatamente
successiva a quella da me citata. Comunque personalmente anche in un
caso come questo preferirei una classe piuttosto che un UDT.

Mauro Gamberini

unread,
Jun 23, 2008, 11:56:19 AM6/23/08
to
> "Gambineri", eh?... Mi sa che questa la pagherai a caro prezzo, forse
> persino piu` caro del canone RAI. :-)))
>

Vi saluterň mia sorella Anna Maria... 8-)

Mauro Gamberini

unread,
Jun 23, 2008, 11:58:36 AM6/23/08
to
> Ho una coppia di amici (quasi) ai quali ho fatto recentemente un lavoro di
> riorganizzazione dei loro database (lui psichiatra, la moglie psicologa)
> ai
> quali chiederò lumi in proposito.
>

Non avevo mai sentito di questo tipo di cura...

eliano

unread,
Jun 23, 2008, 7:20:01 PM6/23/08
to

"Mauro Gamberini" ha scritto:

> > Ho una coppia di amici (quasi) ai quali ho fatto recentemente un lavoro di
> > riorganizzazione dei loro database (lui psichiatra, la moglie psicologa)
> > ai
> > quali chiederò lumi in proposito.
> >
>
> Non avevo mai sentito di questo tipo di cura...
>

Ciao fratello.
Sono gli ultimi ritrovati della medicina moderna. :-))
Pena poco, omo, e rientra nel NG come prima: ripeto che ci manchi!!!
Eliano

peter...@tiscali.it

unread,
Jun 23, 2008, 8:55:46 PM6/23/08
to

peter...@tiscali.it

unread,
Jun 23, 2008, 9:01:16 PM6/23/08
to
On Jun 20, 11:27 pm, r <r...@discussions.microsoft.com> wrote:

Scusate il disturbo, ma non trovo in MS dei post che invece rilevo da
Google, ad esempio:
http://groups.google.com/group/microsoft.public.it.office.excel/msg/1371281537919352
esiste un modo specifico di configurare i due reader ? Grazie
infinite Peter Pan

peter...@tiscali.it

unread,
Jun 23, 2008, 9:02:35 PM6/23/08
to
On Jun 20, 11:27 pm, r <r...@discussions.microsoft.com> wrote:

eliano

unread,
Jun 23, 2008, 9:31:01 PM6/23/08
to

"peter...@tiscali.it" ha scritto:

[cut]


> Scusate il disturbo, ma non trovo in MS dei post che invece rilevo da
> Google, ad esempio:

> http://groups.google.com/group/microsoft.public.it.office.excel/msg/137128153791935> esiste un modo specifico di configurare i due reader ? Grazie
> infinite Peter Pan
>

Ciao Peter.
Vedo che vai di fretta (un post in bianco e due post identici), ma tu non
disturberesti nessuno se, invece di postare in questo thread, aprissi un
nuovo post per quanto riguarda la configurazione dei reader che è fuori tema
in questo contesto.
Per quanto ne so io non dovrebbe essere un problema di configurazione, ma
solo uno sfasamento fra i server che, purtroppo dobbiamo pazientemente
sopportare; prima o poi si rifasano da soli, credo.
Eliano


eliano

unread,
Jun 23, 2008, 9:35:00 PM6/23/08
to

"peter...@tiscali.it" ha scritto:

[cut]


> Scusate il disturbo, ma non trovo in MS dei post che invece rilevo da
> Google, ad esempio:
> http://groups.google.com/group/microsoft.public.it.office.excel/msg/1371281537919352
> esiste un modo specifico di configurare i due reader ? Grazie
> infinite Peter Pan
>

Ciao Peter e scusami ma non avevo aperto il link al quale facevi riferimento
che mi sembra che faccia parte integrante di questo thread.
Per i server ti conferma l'esortazione ad avere pazienza: neppure io vedo il
post di Norman da te segnalato, per cui deve essere successo qualcosa di
imponderabile.
Saluti
Eliano

Norman Jones

unread,
Jun 24, 2008, 2:55:28 AM6/24/08
to
Ciao Eliano,

=============


> Litigare?!
>
> Credo proprio di no; al massimo, come
> la mia moglie, credo che, talvolta, Maurizio
> non mi capisca!
>
> Comunque, ripensandoci, lui potrebbe
> sempre essere *l'altro* Maurizio! :-)
>

Capita anmche nelle migliori famiglie che ci siano delle incomprensioni.:-))

*L'altro* Maurizio ??
Non so di chi tu stia parlando, a meno che tu non intenda dire che Maurizio,
oltre ad essere dotato di notevoli capacità tecniche, sia dotato anche di
una
DOPPIA personalità.
Ho una coppia di amici (quasi) ai quali ho fatto recentemente un lavoro di
riorganizzazione dei loro database (lui psichiatra, la moglie psicologa) ai
quali chiederò lumi in proposito.

=============

Vedo dalla tua risposta in questo thread
che hai letto la mia risposta a Maurizio
sul Google.

Ormai, quindi. avrai capito il mio
riferimento a "*l'altro* Maurizio!"

Dalla mia parte, e' chiaro che il thread, o
almeno la discussione con Maurizio, manca
in coerenza senza quella risposta.

Non pretendo di capire il funzionamento
degli server di Microsoft, ma proverò a
ripostare almeno il testo della mia risposta
originaria a Maurizio,

Tuttavia, vedendo la reazione di R, vorrei
sottolineare il fatto che uno scambio di idee
vigoroso e robusto non costituisce la
controversia ma un dibattito vivace,
in grado di essere utile ai molti dei contributore
a questo NG vibrante.

Essenzialmente il dibattito fra Maurizio e me
centri esclusivamente intorno alla questione
dell'uso delle variabili pubbliche: Maurizio
crede che le variabili pubbliche sono
intrinsecamente deprecabili e possono essere
evitate; mentre, accettando che le variabili
pubbliche, usate scorrettamente, siano aperte
alla critica valida, il mio punto di vista è che,
usato correttamente ed intelligentemente, tali
variabili sono altamente utili e spesso
necessarie.

Come con molte discussioni vigorose e
robuste, credo che ci sia la verità da entrambi
i lati: Maurizio è corretto a sottolineare i
problemi potenziali delle variabili pubbliche e
la sua asserzione che altre soluzioni possono
spesso essere preferibili è inoltre corretta; il
mio punto di vista che le variabili pubbliche
sono utili e spesso inevitabili è anche corretto.

La conclusione che dovrebbe essere ricavata
dalla discussione è, io pensa, che le variabili
pubbliche dovrebbero essere usate con
attenzione e intelligentemente e mai senza una
comprensione della visibilità intrinseca delle
variabili.


---
Regards.
Norman

eliano

unread,
Jun 25, 2008, 5:10:01 PM6/25/08
to

"Norman Jones" ha scritto:

Ciao Eliano,

...cut...

*L'altro* Maurizio ??
Non so di chi tu stia parlando, a meno che tu non intenda dire che Maurizio,

oltre ad essere dotato di notevoli capacita' tecniche, sia dotato anche di
una DOPPIA personalita'.


Ho una coppia di amici (quasi) ai quali ho fatto recentemente un lavoro di
riorganizzazione dei loro database (lui psichiatra, la moglie psicologa) ai

quali chiedero' lumi in proposito.
=============

Vedo dalla tua risposta in questo thread
che hai letto la mia risposta a Maurizio
sul Google.

Ormai, quindi. avrai capito il mio
riferimento a "*l'altro* Maurizio!"

...cut...

Come con molte discussioni vigorose e

robuste, credo che ci sia la verita' da entrambi
i lati: Maurizio e' corretto a sottolineare i


problemi potenziali delle variabili pubbliche e
la sua asserzione che altre soluzioni possono

spesso essere preferibili e' inoltre corretta; il


mio punto di vista che le variabili pubbliche

sono utili e spesso inevitabili e' anche corretto.

La conclusione che dovrebbe essere ricavata

dalla discussione e', io pensa, che le variabili


pubbliche dovrebbero essere usate con
attenzione e intelligentemente e mai senza una

comprensione della visibilita' intrinseca delle
variabili.
==========

Ciao Norman.

Quando ho dato quella risposta non avevo letto il tuo
post su Google e quella non era altro che una battuta
tendezialmente spiritosa.Una delle mie, insomma. :-))
Aggiungo le faccine mancanti :-)) :-)) :-)), vedi mai;
e resto in attesa della battuta di ritorno da Mauro.:-))

Per quanto riguarda le tue conclusioni non posso che
concordare, ma la situazione mi impone di darvi un
consiglio di ordine generale; che lo accettiate o meno
non mi interessa, l'importante per me e' avervelo dato.

Quando iniziate una discussione che potrebbe diventare
accesa o vigorosa o robusta, portandovi addirittura
all'insulto personale e famigliare, usateci la cortesia
di applicare una sempice formula:
=10^(QB)
che va letta come: contate da 1 a 10 e ripetete quel
conteggio Quanto Basta (QB è una variabile mutuata
dalle ricette di cucina).

Nella stessa occasione, usate il fioretto e NON usate:
spada, sciabola, alabarda, mazza ferrata, colubrina etc.
Certe discussioni sono utili ed interessanti per il NG,
per cui, alla prima occasione, siete vivamente pregati
di ripeterle, restando nei limiti imposti dal contesto.

Ringraziandovi per tutto quello che date al NG,
Eliano

0 new messages