Foglio in primo piano
Hai un problema con Excel? 
Foglio in primo piano
di Lucas87 data: 10/12/2015 17:33:57
Ciao a tutti
Ho un foglio con un form. La mia necessità è che il FOGLIO rimanga sempre in primo piano rispetto al form; questo per facilitarne l'utilizzo ed evitare di selezionare ogni vola il foglio.
All'apertura il form è visibile (userform1.show) e il foglio è in primo piano.
Quando passo da un file all'altro, il form viene nascosto (userform1.hide)
Quando si torna al file, il form ricompare (userform1.show), ma il foglio non è in primo piano (vorrei che lo fosse).
Ho già provato con .select e .activate per il workbook, il foglio e una cella, ma nulla da fare.
Anche con Application.Visible = True non funziona.
Allego un file per prova.
Grazie
di isy data: 11/12/2015 13:12:22
Ciao Lucas87
Cit: La mia necessità è che il FOGLIO rimanga sempre in primo piano rispetto al form
Ho rimosso il metodo Hide che avevi utilizzato.
Per selezionare il foglio devi richiamare le Api di Windows, il codice che propongo è per la versione Excel 32 Bit.
Se volete potete apportare le modifiche per la versione di Excel a 64 Bit, io non ho la possibilità di testare il codice.
Vedi allegato: Show Form.xlsm
Note: Con questo codice non hai la gestione delle finestre per garantire il risultato atteso al 100%
Spero solo di non aver indicato un codice che crea solo problemi
di Lucas87 data: 11/12/2015 14:10:52
Interessante...
Purtroppo non fa al caso mio.
Nel mio form ci sono delle caselle di testo, delle caselle di controllo e dei pulsanti che devono mantenere i valori inseriti.
Con unload userform1 i valori vengono persi ogni volta che si attiva il codice.
Grazie comunque
di isy data: 11/12/2015 23:09:59
ciao Lucas87
Cit: Con unload userform1 i valori vengono persi ogni volta che si attiva il codice.
Potresti sempre caricare e salvare i dati sul foglio
Spiegaci meglio cosa devi realizzare per indicarti una possibile soluzione o modifica al codice.
di isy data: 12/12/2015 00:11:16
ciao Lucas87
Ho modificato il file che allego: Show Form Hide.xlsm
In questo ho inserito alcune righe di codice per poter chiudere correttamente il foglio
di Lucas87 data: 12/12/2015 08:59:42
Ciao isy
Così va benissimo.
Grazie 1000
di Lucas87 data: 12/12/2015 09:31:56
Ho fatto qualche prova e ho scoperto una cosa interessante che purtroppo (o per fortuna) rende inutile quello che hai suggerito.
Qualche precisazione:
Fino a qualche settimana fa il foglio era usato su excel 2003. La mia necessità era di avere il form visibile solo sul file in questione (FILE1) e nasconderlo quando veniva attivato un altro file (da qui l'uso di .hide e .show con gli eventi Deactivate e Activate). Contemporaneamente, quando veniva attivato FILE1, doveva rimanere in primo piano il foglio in modo da evitare di selezionarlo manualmente (ecco l'uso di Application.visible=true). Ad esempio nel caso di voler copiare qualcosa da un FILE2 sul FILE1, se il form fosse stato in primo piano non sarei riuscito a incollare i valori sul foglio senza prima averlo selezionato.
Qui sta la differenza tra excel 2003 e il 2013: sul 2003 veniva creata un'unica istanza di excel su cui venivano caricati tutti i file aperti. Per chiudere un singolo file si doveva usare la X piccola grigia, mentre usando la X grande rossa veniva chiuso completamente excel con tutti i file aperti (un po' come la differenza tra .close e .quit). In questa situazione il form rimaneva attivo passando da un file all'altro (perchè era legato al programma excel attivo).
Nella versione 2013 invece, ogni file apre un'istanza di excel separata dalle altre; chiudendo un file con la X grande rossa gli altri restano aperti. Passando da un file all'altro il form viene autoamticamente nascosto perchè si passa da un'istanza all'altra.
Dopo tutta sta pappardella di parole quindi cosa ho fatto? Ho solo tolto la parte degli eventi Activate e Deactivate.
Grazie comunque della disponibilità.
Vuoi Approfondire?