Una famiglia di software per fogli di calcolo Microsoft con strumenti per l'analisi, la creazione di grafici e la comunicazione dei dati.
Ciao Matteo,
Meglio sarebbe di utilizzare una routine dedicata per controllare;/creare i nomi, Quindi, ignora le modifiche suggerite nella mia ultima risposta e lascia il codice della routine Workbook_Open intoccato. Invece, nel modulo standard, sostituisci
'--------->>
Public Sub UnHideSheets()
Dim WB As Workbook
Dim SH As Worksheet
Dim splashSH As Worksheet
Dim arrHidden As Variant, arrVeryHidden As Variant
Dim Res As Variant, Res2 As Variant
Set WB = ThisWorkbook
With WB
Set splashSH = .Worksheets(sSplash)
arrHidden = Split(Evaluate(.Names(sHiddenSheets).RefersTo), ",")
arrVeryHidden = Split(Evaluate(.Names(sVeryHiddenSheets).RefersTo), ",")
End With
Application.EnableEvents = True
For Each SH In ThisWorkbook.Worksheets
With SH
If .Name <> sSplash Then
Res = Application.Match(.Name, arrHidden, 0)
Res2 = Application.Match(.Name, arrVeryHidden, 0)
If IsError(Res) And IsError(Res2) Then
.Visible = xlSheetVisible
End If
End If
End With
Next SH
splashSH.Visible = xlSheetVeryHidden
WB.Saved = True
End Sub
'--------->>
con:
'--------->>
Public Sub CreateNames()
Dim aName As Name, bName As Name
With ThisWorkbook
On Error Resume Next
Set aName = .Names(sHiddenSheets)
Set bName = .Names(sVeryHiddenSheets)
If aName Is Nothing Then
Set aName = Names.Add(Name:=sHiddenSheets, _
RefersTo:="/", _
Visible:=False)
Set bName = .Names.Add(Name:=sVeryHiddenSheets, _
RefersTo:="/", _
Visible:=False)
End If
End With
On Error GoTo 0
End Sub
'--------->>
Public Sub UnHideSheets()
Dim WB As Workbook
Dim SH As Worksheet
Dim splashSH As Worksheet
Dim arrHidden As Variant, arrVeryHidden As Variant
Dim Res As Variant, Res2 As Variant
Set WB = ThisWorkbook
Call CreateNames
With WB
Set splashSH = .Worksheets(sSplash)
arrHidden = Split(Evaluate(.Names(sHiddenSheets).RefersTo), ",")
arrVeryHidden = Split(Evaluate(.Names(sVeryHiddenSheets).RefersTo), ",")
End With
Application.EnableEvents = True
For Each SH In ThisWorkbook.Worksheets
With SH
If .Name <> sSplash Then
Res = Application.Match(.Name, arrHidden, 0)
Res2 = Application.Match(.Name, arrVeryHidden, 0)
If IsError(Res) And IsError(Res2) Then
.Visible = xlSheetVisible
End If
End If
End With
Next SH
splashSH.Visible = xlSheetVeryHidden
WB.Saved = True
End Sub
'--------->>
Ho aggiornato il mio file di esempio.
===
Regards,
Norman