Allora assumiamo che quando scrivi un certo valore vuoi rendere visibile solo un foglio associato, e nascondere tutti gli altri eccetto quello su cui e inserita la scelta (foglio "Frontespizio")
Devi usare una macro di WorksheetChange...
Sul foglio Frontespizio creati da qualche parte una tabella che abbia in prima colonna il valore da scegliere e in seconda colonna il foglio associato alla scelta.
Io l'ho fatto in colonna S e T come da immagine:
caricare immaginiDefinisci ora un "Nome", e chiamalo Convalida; come "Riferito a" usa questa formula:
- Codice: Seleziona tutto
=SCARTO(Frontespizio!$S$2;0;0;CONTA.VALORI(Frontespizio!$S$2:$S$100);1)
Supponiamo che la cella in cui fare la scelta sia M29: assegna a questa cella una Convalida da Elenco, e come "Origine" scrivi
=ConvalidaIn questo modi in M29 potrai solo inserire uno dei valori scritti nella tabella che hai prima creato.
Ora fai Tasto Dx sul tab col nome foglio Frontespizio; scegli Visualizza codice; copia questo codice e incollalo nel frame vuoto dell'editor delle macro che si e' aperto:
- Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
Dim myEccez, myTarg As String, myMatch
'
myTarg = "M29" '<<< 1) La cella con la scelta
myEccez = Array("Frontespizio", "Foglio3") '<<< 2) I fogli che vuoi rimangano sempre visibili
If Application.Intersect(Target, Range(myTarg)) Is Nothing Then Exit Sub
'
For I = 1 To Worksheets.Count
myMatch = Application.Match(Sheets(I).Name, myEccez, 0)
If IsError(myMatch) Then
Sheets(I).Visible = False
Else
Sheets(I).Visible = True
End If
Next I
myMatch = Application.Match(Range(myTarg).Value, Range("Convalida"), 0)
If Not IsError(myMatch) Then
Sheets(Range("Convalida").Cells(1, 1).Offset(myMatch - 1, 1).Value).Visible = True
End If
'
End Sub
Personalizza le righe marcate <<<; in particolare nella riga "<<< 2)" inserira l'elenco dei foglio che vuoi rimangano sempre visibili.
Torna a questo punto su Frontespizio, prova a modificare la scelta in M29 e vedi l'effetto che fa.
Ciao