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

passare parametro tra ThisWorkbook e UserForm1

933 views
Skip to first unread message

info1

unread,
Jan 20, 2010, 5:28:26 AM1/20/10
to
Buongiorno,
in apertura di un file Excel (2003) vorrei passare un parametro tra
ThisWorkbook e la UserForm1 richiamata:

Private Sub Workbook_Open()
UserForm1.Show
...............(qui vorrei richiamare il parametro "scelta" valorizzato
in UserForm1)........
End Sub

Private Sub CommandButton1_Click()
scelta = 1
Unload Me
End Sub

Ho provato cosi come faccio tra una Macro ed una UserForm, anche provando
varianti ma non ci riesco.
Grazie a chi mi dice se e come si fa.
Saluti, Gian


Mauro Gamberini

unread,
Jan 20, 2010, 5:50:26 AM1/20/10
to

Metti una varioabile pubblica in un modulo standard.

Public vScelta As Variant

vScelta adesso � visibile da tutto il progetto.
Quindi puoi metterci un valore tramite il
CommandButton della UserForm:

Private Sub CommandButton1_Click()
vScelta = 1
Unload Me
End Sub

E richiamare il valore di vScelta dove vuoi:

Public Sub m()
MsgBox CStr(vScelta)
End Sub

La variabile vScelta � definita come Variant
perch� non conosco il tipo di dato che deve
contenere. Puoi ovviamente esplicitarlo.

Se(se) invece devi passare il valore alla UserForm,
il concetto � lo stesso.
Variabile pubblica in un modulo di standard.
Valorizzi la variabile.
La UserForm pu� leggere il valore.
In questo caso avrei anche altri modi per
passare il valore ad una UserForm.

Questo � quello che ho capito.
Nel caso sia diverso il problema,
prova di spiegare meglio cosa devi fare

Grazie per l'attenzione.

--
---------------------------
Mauro Gamberini
Microsoft MVP - Excel
http://www.riolab.org/
http://www.maurogsc.eu/
http://social.microsoft.com/Forums/it-IT/excelit/threads


info1

unread,
Jan 20, 2010, 6:49:35 AM1/20/10
to
Grazie per avermi risposto.

Il ThisWorkbook cui faccio riferimento � quello che Excel esegue in
apertura: "Private Sub Workbook_Open()".
L� a me interessa ricevere semplicemente 0 oppure 1 dalla UserForm che
in esso viene richiamata.
Nella UserForm l' utente preme uno dei due tasti presenti e di conseguenza
assegna 0 (voglio uscire) oppure 1 (voglio continuare) alla variabile
vScelta.
Se l'utente dice di voler uscire, bisogna comunque tornare a ThisWorkbook
per alcune operazioni di chiusura e poi si chiude.

Ho provato a mettere nel modulo ThisWorbook (in pratica sopra a "Private Sub
Workbook_Open()"):
Public vScelta As Variant, ma non funziona.
Ho anche provato (forse � un'eresia) a cambiare "Private Sub
Workbook_Open()" in "Public Sub Workbook_Open()", ma non funziona.
Naturalmente se provo con una Sub qualunque, il tutto funziona bene.

Spero di essermi spiegato meglio.
Saluti, Gian

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

Mauro Gamberini

unread,
Jan 20, 2010, 7:13:44 AM1/20/10
to
> Il ThisWorkbook cui faccio riferimento � quello che Excel esegue in
> apertura: "Private Sub Workbook_Open()".
> L� a me interessa ricevere semplicemente 0 oppure 1 dalla UserForm che
> in esso viene richiamata.
> Nella UserForm l' utente preme uno dei due tasti presenti e di conseguenza
> assegna 0 (voglio uscire) oppure 1 (voglio continuare) alla variabile
> vScelta.
> Se l'utente dice di voler uscire, bisogna comunque tornare a ThisWorkbook
> per alcune operazioni di chiusura e poi si chiude.
>
> Ho provato a mettere nel modulo ThisWorbook (in pratica sopra a "Private
> Sub Workbook_Open()"):
> Public vScelta As Variant, ma non funziona.
> Ho anche provato (forse � un'eresia) a cambiare "Private Sub
> Workbook_Open()" in "Public Sub Workbook_Open()", ma non funziona.
> Naturalmente se provo con una Sub qualunque, il tutto funziona bene.
>


Hai letto quanto ho scritto?
Mi sembra di no.
Vedi dove ho detto di mettere
la variabile e come utilizzarla.
Perch� se poi non leggete...

Inotre l'evento Open chiama la UserForm
ma alla chiusura della stessa non torni nell'evento
Open.

Forse non capisco ma vediamo se indovino:
vuoi aprire la UserForm all'avvio del file
e in base al fatto che l'utente prema o meno un
pulsante che � sulla UserForm,
eseguire qualcosa(cosa?), e cos�?

Se cos�, in base al pulsante premuto chiamerai
o meno la procedura di chiusura(o altro), tipo:

Private Sub CommandButton1_Click()
Unload Me
Call mProcedura
End Sub

e in un modulo standard(non in ThisWorkbook)
avrai la procedura:

Public Sub mProcedura()
'codice
End Sub

info1

unread,
Jan 21, 2010, 5:59:30 AM1/21/10
to
Hai troppa fiducia nelle mie capacit�: � da ieri, dato che me lo hai detto
tu, che so che ThisWorkbook non � un modulo standard !!

Mi manca una cosa: se nella procedura di chiusura metto Application.Quit
come posso fare in modo che il sistema non chieda se voglio salvare le
modifiche?

Grazie e saluti, Gian


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

messaggio news:%23T7KEoc...@TK2MSFTNGP05.phx.gbl...

Mauro Gamberini

unread,
Jan 21, 2010, 6:49:57 AM1/21/10
to
> Hai troppa fiducia nelle mie capacit�: � da ieri, dato che me lo hai detto
> tu, che so che ThisWorkbook non � un modulo standard !!
>

Bene.

> Mi manca una cosa: se nella procedura di chiusura metto Application.Quit
> come posso fare in modo che il sistema non chieda se voglio salvare le
> modifiche?
>


Cos� chiude e non tiene conto
delle eventuali modifiche fatte.

With Application
.DisplayAlerts = False
.Quit
End With

Dovessi invece salvare le modifiche
(presupponendo i file gi� salvato in
precedenza, quindi *non* un file nuovo):

With Application
.DisplayAlerts = False
ThisWorkbook.Save
.Quit
End With

Ho scritto qui in O.E. e non ho provato.
Un cenno se tutto ok, grazie.

info1

unread,
Jan 21, 2010, 7:38:53 AM1/21/10
to
Private Sub CommandButton2_Click()

Unload Me
Call mProcedura
End Sub

Public Sub mProcedura()


With Application
.DisplayAlerts = False
.Quit
End With

End Sub

Ho fatto anche il Debug per verificare che passasse da qui.
Chiude chiedendo se voglio salvare le modifiche.
Spero d'aver fatto le cose giuste: intendiamoci, non da segnali di errore.
Gian

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

messaggio news:eIxWc$omKHA...@TK2MSFTNGP05.phx.gbl...

Mauro Gamberini

unread,
Jan 21, 2010, 8:43:47 AM1/21/10
to
> Ho fatto anche il Debug per verificare che passasse da qui.
> Chiude chiedendo se voglio salvare le modifiche.
> Spero d'aver fatto le cose giuste: intendiamoci, non da segnali di errore.
>

Prova:

Public Sub mProcedura()
With Application

ThisWorkbook.Saved = True


.DisplayAlerts = False
.Quit
End With
End Sub

Fai sapere, grazie.

info1

unread,
Jan 21, 2010, 9:16:42 AM1/21/10
to
Funziona.

ThisWorkbook.Saved = True , sta a dire che quello che c'era da salvare per
le modifiche fatte in ThisWorkbook, prima che questo chiamasse UserForm, se
erano da salvare sono state gi� salvate?
Per me va bene cos�, a parte il fatto che nel mio caso non mi interessa
salvare quelle modifiche.

Grazie per l'aiuto, penso di essere a posto, Gian


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

messaggio news:emkPD$pmKHA...@TK2MSFTNGP04.phx.gbl...

Mauro Gamberini

unread,
Jan 21, 2010, 9:33:16 AM1/21/10
to
> ThisWorkbook.Saved = True , sta a dire che quello che c'era da salvare per
> le modifiche fatte in ThisWorkbook, prima che questo chiamasse UserForm,
> se erano da salvare sono state gi� salvate?
>

Vuol dire che chiudo senza
salvare le modifiche fatte dopo l'apertura del
file o dopo l'ultimo salvataggio, vuoi via codice,
vuoi tramite gli appositi pulsanti.

Se vuoi salvare le modifiche apportare
dall'ultimo salvataggio:

With Application
ThisWorkbook.Save


.DisplayAlerts = False
.Quit
End With

Vediamo di capirci.
Apri il file.
Scrivi in una cella.

ThisWorkbook.Saved = True
Application.Quit

Chiude Excel senza salvare
le modifiche fatte al file.


Apri il file.
Scrivi in una cella.

ThisWorkbook.Save
Application.Quit

Chiude Excel con le modifiche che
hai salvato chiamando il metodo Save.

Un trucco. Nell'editor del vb di Excel,
posizionati su Save e premi F1.
Fai la stessa cosa con Saved.
La guida ti spiegher� molte cose.

Grazie per l'attenzione.

0 new messages