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
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
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...
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
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...
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.
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...
Prova:
Public Sub mProcedura()
With Application
ThisWorkbook.Saved = True
.DisplayAlerts = False
.Quit
End With
End Sub
Fai sapere, grazie.
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...
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.