Nascondi Fogli



  • Nascondi Fogli
    di Tarcus (utente non iscritto) data: 28/08/2013 17:33:24

    Salve a tutti del forum.
    Sono nuovo e non conosco nessuno ma spero di affezionarmi presto.

    Mi servirebbe sapere se è possibile tramite codice VBA poter nascondere Uno o più fogli in base al contenuto di una cella p.es:Z1 all'apertura della cartella
    Se questa contiene la cifra 1 mi dovrà nascondere il Foglio1 (o nome foglio che indicherò direttamente nel codice).Se contiene qualsiasi altro carattere o cella vuota,mi visualizzerà tutti i Fogli.
    Avrò cura di mascherare il contenuto della cella Z1 nel formato ;;; che nessuno al di fuori di me deve capire lo stratagemma, nascondendo al bisogno un determinato Foglio per evitare che il prossimo utente non venga o meno a conoscenza del contenuto di esso.

    Grazie in anticipo per l'aiuto da Aldo.




  • di totygno71 (utente non iscritto) data: 28/08/2013 18:46:40

    Ciao Tarcus

    al di là dello "stratagemma" del tutto discutibile... per ottenere quello che vuoi tu dovresti:

    sfruttare l'evento open del file e qui inserire il controllo della cella Z1... se Z1=1 allora nascondi Fogliochevuoi altrimenti esci dalla sub

    Provare per credere.... ^_^



  • di Tarcus (utente non iscritto) data: 28/08/2013 19:59:27

    Forse ho mancato un elemento importante.........io di VBA non ne capisco nulla!!!
    Al massimo so dove inserire il codice!



  • di totygno71 (utente non iscritto) data: 29/08/2013 08:53:33

    Il codice sotto:

    all'apertura del file

    se nel foglio1 cella A1 c'è il valore 1 allora nasconde il foglio 1
    altrimenti
    rendi il foglio1 visibile.

    fine sub

    ciao.
     
    Private Sub Workbook_Open()
    
    If Sheets(1).[A1] = 1 Then
        Sheets("Foglio1").Visible = False
        Else
        Sheets("Foglio1").Visible = True
    End If
    
    End Sub



  • di Tarcus (utente non iscritto) data: 29/08/2013 09:53:29

    Grazie.Era proprio quello che cercavo!!

    Un ultima precisazione.Nel caso al verificarsi della condizione in cella A1 volessi nascondere più di un Foglio???




  • di totygno71 (utente non iscritto) data: 29/08/2013 10:08:24

    Fai cosi
     
    Private Sub Workbook_Open()
    
    If Sheets(1).[A1] = 1 Then
        Sheets("Foglio1").Visible = False
        'metti qui i fogli che vuoi nascondere
        Else
        Sheets("Foglio1").Visible = True
        'qui i fogli che vuoi scoprire
    End If
    
    End Sub



  • di Tarcus (utente non iscritto) data: 29/08/2013 10:51:07

    Ho seguito le indicazioni e mi esce:
    Private Sub Workbook_Open()

    If Sheets(1).[A1] = 1 Then
    Sheets("Foglio1").Visible = False
    'metti qui i fogli che vuoi nascondere
    Sheets("Foglio2").Visible = False
    Else
    Sheets("Foglio1").Visible = True
    'qui i fogli che vuoi scoprire
    Sheets("Foglio2").Visible = True
    End If

    End Sub

    Funziona a dovere ma ho capito che la cella da testare deve essere contenuta in un altro foglio diverso da quelli da nascondere altrimenti non posso cambiare il contenuto di Cella A1 x far riapparire i Fogli alla prossima apertura!!!!!!!!!!? Giusto? o esiste un altra escamotage x aggirare l'ostacolo?

    Grazie x la pazienza................




  • di Grograman data: 29/08/2013 11:19:44

    2 varianti sul tema:
     
    1:
    
    Option Explicit
    Private Sub Workbook_Open()
      Dim wb As Workbook
      Dim ws As Worksheet
      Set wb = ThisWorkbook
      Set ws = wb.Sheets(1)
        If ws.Cells(1, 1) = 1 Then
          For Each ws In wb.Worksheets
            Select Case ws.Name
              Case Is = "Vedo1", "Vedo2", "Vedo3", "Vedo4"
                ws.Visible = 2
              Case Else
            End Select
          Next ws
        End If
      Set wb = Nothing
      Set ws = Nothing
    End Sub
    
    
    2:
    
    Private Sub Workbook_Open()
      Dim wsHide As Variant
      Dim strW As Variant
      wsHide = Array("Vedo1", "Vedo2", "Vedo3", "Vedo4")
      If ThisWorkbook.Sheets(1).Cells(1, 1) = 1 Then
        For Each strW In wsHide
            ThisWorkbook.Worksheets(strW).Visible = -1
        Next strW
      End If
    End Sub
    



  • di totygno71 (utente non iscritto) data: 29/08/2013 11:29:10

    @Tarcus
    no la cella non deve necessariamente essere nel foglio da nascondere...
    basta sostituire a

    If Sheets(1).[A1] = 1 Then

    con il foglio che non vuoi nascondere per es.

    If Sheets(8).[A1] = 1 Then



  • di Tarcus (utente non iscritto) data: 29/08/2013 16:42:04

    Grandi......................

    La seconda macro di Grogmaran non riesco ad usarla pur avendo sostituito Vedo1..........con Foglio1 Foglio2 Foglio3.Ho pensato che forse non va inserita in ThisWorkbook??????????????????

    Comunque ho risolto egregiamente il mio problema...
    Grazie 1000.



  • di Grograman data: 29/08/2013 16:58:52

    Più probabilmente perchè SCOPRE i fogli
     
    ThisWorkbook.Worksheets(strW).Visible = -1  'qui modificare, -1 visibile, 0 nascosto, 2 molto nascosto
    



  • di totygno71 (utente non iscritto) data: 29/08/2013 18:27:15

    Se risolto bisognerebbe spuntare su "discussione risolta"



  • di Tarcus (utente non iscritto) data: 29/08/2013 20:00:16

    Grazie di nuovo e.........................arrivederci con qualche nuovo rompicapo!!!!!!!!!!



  • di totygno71 (utente non iscritto) data: 29/08/2013 20:33:05

    Ok allora al prossimo "stratagemma" ^_^