Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

impedire cambio foglio

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

Re: impedire cambio foglio

Postdi Anthony47 » 17/09/13 15:06

Anche dopo questo supplemento di informazioni il problema e' una carenza di analisi; ad esempio, dopo che hai aperto Foglio5 (che sembra essere la chiave per una libera navigazione tra i fogli), come hai pensato di interrompere questa libera navigazione?
Inoltre, guardando i pulsanti su Menu e il gioco che fanno, chi nascondera' mai Foglio5, e Foglio6 e Foglio7?

Poi una technicality: se vuoi controllare da macro quali fogli devono essere visibili e quali nascosti, allora e' meglio usare il loro "CodeName" (vedi help on line alla voce CodeName).
Il CodeName e' assegnato in fase di progetto (per default si chiamano Foglio1, Foglio2, etc; e' una scelta secondo me infelice perche' diventa facile confondere il concetto di CodeName con quello di Name); a differenza del "Name" esso non puo' essere cambiato se non entrando in progettazione vba.
Quindi non usare, ad esempio
Sheets("Foglio4").Visible = True
Ma
Foglio2.Visible = xlSheetVisible

Perche' "Foglio2"?? perche' durante il gioco di crea file, aggiungi fogli, sposta e cancella, a quello che progettualmente e' il secondo foglio del tuo file e' stato poi cambiato il nome in "Foglio4", Tutto questo lo vedi nel frame Progetto-Vba Progetto:
Immagine

Uploaded with ImageShack.us
Quello che vedi tra parentesi e' il nome del foglio (che puoi cambiare a livello utente), quello prima e' il nome di progetto (CodeName, che puoi cambiare solo come Proprieta' dell' oggetto worksheet)

Cio' detto, ti sparo la mia analisi:
-il file all' apertura si posiziona su foglio Menu, tramite una macro di Workbook_Open
-il pulsante "Apri Foglio4" deve contenere anche le istruzioni per nascondere tutti gli altri fogli eccetto Menu
-su Foglio4, invece di avere un pulsante "Nascondi Fogli" (che, come l' hai fatto, nasconde solo Foglio4), ne metti uno "Torna a Menu"
-il pulsante Torna a Menu attiva il foglio Menu
-una macro di Worksheet_Activate su Menu nasconde tutti i fogli eccetto Menu

I questo modo:
-il foglio Menu e' il primo foglio visibile ed e' sempre disponibile
-se apri Foglio4, l' utente avra' disponibile Foglio4 e Menu; puo' uscire da questa situazione o tramite il pulsante o selezionando Menu dall' elenco dei fogli
-se apri Foglio4 e Foglio5 la navigazione tra i fogli rimane libera, fintanto che o si va su foglio Menu o si usa il pulsante su Foglio4

Per questo avrai bisogno di
1) una macro di Workbook_Open che metterai in Questa_Cartella_di-Lavoro:
Codice: Seleziona tutto
Private Sub Workbook_Open()
Dim Ws As Worksheet
'
For Each Ws In ThisWorkbook.Worksheets
    If Ws.CodeName <> "Foglio1" Then Ws.Visible = xlSheetVeryHidden
Next Ws
End Sub


2) una macro di Worksheet_Activate per il foglio Menu:
Codice: Seleziona tutto
Private Sub Worksheet_Activate()
Dim Ws As Worksheet
'
For Each Ws In ThisWorkbook.Worksheets
    If Ws.CodeName <> "Foglio1" Then Ws.Visible = xlSheetVeryHidden
Next Ws
End Sub


Puoi eliminare le macro di Worksheet_Deactivate, devi modificare la macro dei pulsanti, ma qui non dovresti avere problemi.

Guarda anche il messaggio di Ricky, sopra, che ha aggiunto qualche elemento in piu' da valutare.

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Sponsor
 

Re: impedire cambio foglio

Postdi matzap » 17/09/13 19:47

allora:
a questo link cè quelo che sono riuscito a creare con i vostri consigli.
http://rapidshare.com/share/5962E5F6E25 ... 37E9B83F19

c'è anche una userform per inserire la password per aprire i fogli ( già presenti sul file originale)
tuttavia non è proprio quello che cercavo di fare.

infatti una volta aperto il Foglio4 se vado sul foglio menu il foglio4 si chiude. io invece vorrei rimanere bloccato sul foglio4 ( per voi sarà inutile ma vi assicuro che ai fini di quello che mi serve non lo è)

se apro i fogli4-5-6 posso muovermi su questi ma se vado su menu i fogli4-5-6 si chiudono. e questo vorrei non accadesse

il file originale che non posso pubblicare è molto più complicato e fa molte cose in più. perciò quello che mi servirebbe, è rimanere blocato su Foglio4 o permettere tutto
inoltre all'apertura ci sono già 5 fogli visibili ( menu, tabella, dati, report, nomi) e quindi dovrei modificare la macro Workbook_Open per vedere questi fogli all'apertura.

Il consiglio di usare CodeName è molto utile.
grazie a entrambi,ma vi chiederei un ultimo sforzo per esaudire la mia pretenziosa necessità. :roll:

ciao
excel 2010
matzap
Utente Senior
 
Post: 227
Iscritto il: 16/04/13 08:27

Re: impedire cambio foglio

Postdi matzap » 17/09/13 19:49

scusate, la password per provare il file è "ciao"
e il file è "prova nascondi foglio3"
grazie
excel 2010
matzap
Utente Senior
 
Post: 227
Iscritto il: 16/04/13 08:27

Re: impedire cambio foglio

Postdi Anthony47 » 17/09/13 22:36

Perdona, io ti ho "sparato" la mia analisi per gestire i fenomeni dall' inizio alla fine; non l' ho azzeccata e la cosa ma non mi stupisce, ma continuo a non capire quale e' la gestione che tu immagini; banalmente, ad esempio, la navigazione libera tra tutti i fogli aperti quando dovrebbe essere interrotta?
Comunque, se il tuo obiettivo e' rimanere su Foglio4 fintanto che l' utente non pigia il pulsante "Nascondimi", salvo che risulti aperto anche Foglio5 (nel qual caso la navigazione tra i fogli e' libera), hai gia' la macro di scossa da cui partire; basta aggiungere la verifica sullo stato di Foglio5; cioe':
Codice: Seleziona tutto
Private Sub Worksheet_Deactivate()
  If Me.Visible = xlSheetVisible And Sheets("Foglio5").Visible <> xlSheetVisible Then Me.Activate
End Sub

Ho usato il Nome ("Foglio5"), tu userai piu' prudentemente il CodeName
Ovviamente questo codice gestisce "a modo suo" la terminazione della libera navigazione tra i fogli (caso Foglio5=visibile): in questo caso la navigazione libera sara' interrotta solo quando l' utente o chi per lui selezionera' Foglio4 e nel frattempo Foglio5 e' divenuto "nascosto".

Ciao
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: impedire cambio foglio

Postdi matzap » 18/09/13 08:14

Grazie Anthony,
non ho dubbi che tu e riky abbiate hai cercato di trovare la soluzione migliore e sicuramente più esaustiva di tutti i possibili casi. Quello che però cercavo è proprio l'utima macro.

Per interrompere la navigazione libera che sarà disponibile solo per l'amministratore durante la manutenzione del file, basterà andare sul Foglio4 e chiudere tutto.

per l'utente normale sarà bloccato su Foglio4 e uscirà tramite lo stesso tasto.


La prossima volta cercherò di essere più preciso dall'inizio
ciao e grazie.
excel 2010
matzap
Utente Senior
 
Post: 227
Iscritto il: 16/04/13 08:27

Re: impedire cambio foglio

Postdi Anthony47 » 18/09/13 19:12

Haaaaaa...
Insomma ci stavamo stremando per niente :D Meglio cosi'.

Alla prossima.
Anthony
Win7 + Office 2010 Ita; Win 7 + Office 2013 Ita
Xp + Office 2003 Ita
E voi cosa usate? (per istruzioni vedere viewtopic.php?f=26&t=97449)
Avatar utente
Anthony47
Moderatore
 
Post: 13899
Iscritto il: 21/03/06 16:03
Località: Ivrea

Precedente

Torna a Applicazioni Office Windows


Topic correlati a "impedire cambio foglio":


Chi c’è in linea

Visitano il forum: Nessuno e 20 ospiti