UserForm che si ripropone
Hai un problema con Excel? 
UserForm che si ripropone
di JellyFish (sono iscrittissima) (utente non iscritto) data: 15/10/2012 11:05:11
Again
Ho messo in "This workbook" e nella form "Home" il codice in allegato.
Quando apro contepiraneamente al mio file altri file in excel si vede home e se la clicco mi restituisce un errore perchè credo che il nuovo file non trovi alcun codice associato allora la chiudo.
Quando torno sul mio file non la trov più :(
Come posso risolvere? Non mi viene in mente nulla :(
--- This Workbook ---
Option Explicit
Private Sub Workbook_Open()
Home.Show
Call Visualizza_Home
End Sub
Private Sub Workbook_Close()
Dim Form As UserForm
For Each Form In Worksheets
If Form.Name <> "Home" Then
Form.Visible = False
End If
Next
Call Visuallizza_Home
End Sub
--- UserForm Home ---
Option Explicit
Private Sub CommandButton1_Click()
Call Visualizza_Home
Call Visualizza_Form_Gestione
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then
Cancel = True
MsgBox "La maschera può essere spostata ma non può essere chiusa.", vbCritical
End If
End Sub
|
di Vecchio Frac data: 15/10/2012 11:47:02
Ma scusa tanto Jelly iscrittissima (e perchè non fai il Login allora? ^_^)...
La cosa che hai scritto qui per forza darà errore... dichiari "Form" come userform ma poi gli assegni un oggetti di tipo Sheet e cerchi di chiudere un foglio che in realtà dovrebbe essere una form...
Cosa volevi chiudere? l'userform o il foglio? se l'userform, basta semplicemente un UnLoad Me.
Private Sub Workbook_Close()
Dim Form As UserForm '<--- qui dichiari la variabile come userform...
For Each Form In Worksheets '<--- ...ma qui la associ ai fogli della cartella! non funziona così
If Form.Name <> "Home" Then
Form.Visible = False
End If
Next
Call Visuallizza_Home
End Sub
di Jellyfish data: 15/10/2012 13:44:23
Volevo chiudere tutte le form del mio foglio tranne chimata "Home" quando chiudo il file. Cos' quando lo riapro vedo sempre come form "Home"
Ma funziona anche così come l'ho scritta
Per scriveral cossetta come faccio? Basta mettere "Forms" al posto di "worksheets"?
Il mio problema è che questra form "Home", se ho aperto un altro file excell qualsiasi e il mio (con Form "Home" questa la vedo anche nel nuovo file aperto
di Jellyfish data: 16/10/2012 00:30:32
ehmmmm che ho scritto oggi all'ora di pranzo?!?!?!... non si capisce nulla :( Provo a rispiegarmi perchè non ho risolto il problema :(
Ho impostato una piccola form che compare all'apertura del file, non può essere chiusa ma solo spostata.
Il codice lo avevo già postato.
Ora però se contemporaneamente apro un altro file excel, la piccola form si vede anche in questo file.
Come faccio a fare in modo che la form si veda solo nel suo file, dove è stata generata e dove ci sono tutti i suoi codici di riferimento?
@Vecchio Frac
Il con il codice che mi hai commentato volevo dire
"quando chiudi il file chiudi anche tutte le Form tranne quella che si chiama "Home". Non so perchè ma funziona anche con "in Worksheets" tuttavia se mi dici che la sintassi è sbagliato come la potrei scrivere correttamente?
Grazie ancora
Giorgia
di Vecchio Frac data: 16/10/2012 11:16:17
Il tuo nome mi piace molto, peccato nasconderlo sotto "Jelly" :)
cit. " Ora però se contemporaneamente apro un altro file excel, la piccola form si vede anche in questo file. "
--> sì, perchè l'hai resa modale e perciò obbligatoria. Finchè non la chiudi rimane visibile. Butto lì l'idea, ma intercettando il Deactivate del foglio da dove viene lanciata la Userform potresti renderla visibile o meno (Hide / Show)
cit. " quando chiudi il file chiudi anche tutte le Form tranne quella che si chiama "Home"
-->
For Each uf in Userforms
if uf.name <> "Home" Then unload uf
next
di Jellyfish data: 17/10/2012 12:59:28
Ehmmmm
Ciao Vecchio Frac,
Ho iserito il tuo codice e funziona tutto... e ora dovrebbe essere anche corretto
La cosa strana è che da quando ho fatto la modifica non ho nemmeno più maschere che si ripropongono su altri file!!!
Per me è risolto
Grazie ancora!
Option Explicit
Private Sub Workbook_Open()
Home.Show
Call Visualizza_Home
Range("A1").Select
End Sub
Private Sub Workbook_Close()
Dim Form As UserForm
For Each Form In UserForms
If Form.Name <> "Home" Then
Unload Form
End If
Next
Call Visuallizza_Home
End Sub |
di Jellyfish data: 12/11/2012 18:58:32
Nulla quella piaccola macherina che voglio sempre aperta nel mio file, ma solo nel mio file, si rirpopone su tutti gli altri file aperti. Così se mi sbaglio e la clicco quando sono su un altro foglio mi va in debug :(.
C'è sempre perchè l'ho messa su Thisworkbook con il codice in allegato...
Forse la dovrei mettere su tutti i fogli... o sul foglio principale... cma come si scrive il codice? e dove?
Private Sub Workbook_Open()
Home.Show
End Sub |
di Jellyfish data: 12/11/2012 21:59:14
levo la spunta :(
di HarryBosch data: 12/11/2012 23:09:24
Ciao Jelly
solo per curiosità: perché ti interessa avere la userform attiva mentre apri un altro file Excel?
Devi recuperare delle informazioni dal file che apri?
di Jellyfish data: 13/11/2012 08:11:40
Harry, apro gli altri file perchè devo copiare delle informazioni sul mio file principale...
mi piacerebbe proprio non vederla la machera quando sono sugli altri file oppure che fosse inattiva ma proprio non ci riesco, ho provato un po' ma nulla :(
potrei importare i fogli che copio direttamente ma questo comporterebbe cmq di salvare i file in un determinato modo delle cartelle e bla bla bla... e mettere altri controlli, alla fine sono 9 copia e incolla da fare una volta l'anno... e cmq il problema della maschera che si ripropone rimane...
ti viene in mente qualcosa?
di HarryBosch data: 13/11/2012 08:36:59
Beh, per esempio che possiamo recuperare i dati senza aprire necessariamente l'altro file Excel.
A patto di sapere dove si trovano.
di Jellyfish data: 13/11/2012 09:45:50
Posso strutturare un directory carina e ordinata ma poi devo stare attenta a mettere solo un file o il file ocn quel determinato nome... e se si sbagli... in realta il copia incolla richiede un certo sforzo umano... vi aveo già chiesto, ho provato... troppo complesso.
Poi mi rimande il fatto che questa maledetta mascherina si ripropone sugli altri file excel... metti che mentre ho il mio tool apero voglio aprire un altro file perchè un collega mi chiede una cosa... preferirei risolvere il problema della maschera...
Ma non si può dire "bella mascherina se non sei sul file che ti genera stai nascosta" mi accontenterei anche di digli "disattivati"...
di Vecchio Frac data: 13/11/2012 10:22:31
Ciao Jelly, bentornata :)
cit. " Ma non si può dire "bella mascherina se non sei sul file che ti genera stai nascosta" mi accontenterei anche di digli "disattivati"... "
---> Ho risimulato la situazione, creando una userform non modale (sicchè posso navigare nel foglio e aprire altri fogli) e infatti rimane in primo piano anche aprendo altri file. Adesso ci smanetto un attimo, vediamo cosa riesco a dirti.
Sul fatto di poter accedere a fogli chiusi senza bisogno di aprirli, la tecnica è semplice e il copia incolla è privo di errori se si sa a priori cosa va copiato e dove, lasciamo fare a Excel questo sforzo umano :)
di Vecchio Frac data: 13/11/2012 10:48:30
Bene, ho fatto alcune prove, forse ci siamo :)
Nella sezione ThisWorkbook del file che contiene e apre l'userform devi inserire il codice per nascondere/mostrare la form quando disattivi/attivi il Workbook stesso.
L'userform è stata aperta in modalità non modale per consentire di aprire altri file Excel:
da qualche parte quando viene richiamata l'userform deve esserci un'istruzione simile a questa:
UserForm1.Show vbModeless
Option Explicit
'siamo in ThisWorkbook del file che contiene l'userform principale
Private Sub Workbook_Activate()
UserForm1.Show
End Sub
Private Sub Workbook_Deactivate()
UserForm1.Hide
End Sub |
di Jellyfish data: 13/11/2012 13:02:26
SEI UN GENIOOOOOOOOOOO !!!! SIIIIIIIIIIIIII FUNZIONAAAAAAA
sorry per lo sfogo ma sono gg che provo ma nulla :(
Grazie mille!!!
Vuoi Approfondire?