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:
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