fogli da visualizzare



  • fogli da visualizzare
    di mb data: 13/10/2016 12:39:35

    Buongiorno a tutti

    proseguendo la discussione precedente sono a richiedere un aiuto per una situazione come questa

    nel file allegato ci sono più fogli con i dati

    se io desidero tramite inputbox visualizzare solo alcuni fogli specifici come posso fare


    nello specifico vorrei visualizzare o fogli di torino,bari


    oppure

    torino,roma,firenze
    e nascondere quelli non inseriti nella inputbox


    grazie



  • di alfrimpa data: 13/10/2016 12:51:59

    Ciao mb

    Ma più che una una inputbox non ti converrebbe utilizzare una listbox multiselect dove visualizzi tutti i fogli della cartella e poi selezionando i desiderati li nascondi/scopri?

    Ora sto per uscire ma al rientro ci provo.

    Alfredo





  • di Mister_x (utente non iscritto) data: 13/10/2016 13:26:19

    ciao MB

    intanto saluto Alfredo
    prendendo spunto da ieri , come avevo accennato, le sub() che avevo proposto andavano ampliate

    posto sempre un esempio con InputBox() come da te accennato


    ciao

     
    Option Explicit
    Sub Nascondi()
    Dim sh As Worksheet
    Dim testo As String, sSPlit() As String, IBox As String, Foglio As String
    Dim K As Integer
    IBox = InputBox("immettere Nomi o parziale di nomi divisi da virgola" _
            & Chr(10) & " ess. Pippo,Pluto")
    sSPlit = SPlit(IBox, ",")
    For K = LBound(sSPlit) To UBound(sSPlit)
            testo = sSPlit(K)
    For Each sh In Worksheets
    Foglio = sh.Name
      If Foglio <> "NascondiScopri" Then
        If InStr(1, Foglio, testo, 1) > 0 Then
         Sheets(Foglio).Visible = False
      End If
      End If
    Next
    Next K
    End Sub
    
    
    Sub Scopri()
    Dim sh As Worksheet
    Dim testo As String, sSPlit() As String, IBox As String, Foglio As String
    Dim K As Integer
    IBox = InputBox("immettere Nomi o parziale di nomi divisi da virgola" _
            & Chr(10) & " ess. Pippo,Pluto")
    sSPlit = SPlit(IBox, ",")
    For K = LBound(sSPlit) To UBound(sSPlit)
            testo = sSPlit(K)
    For Each sh In Worksheets
    Foglio = sh.Name
      If Foglio <> "NascondiScopri" Then
        If InStr(1, Foglio, testo, 1) > 0 Then
         Sheets(Foglio).Visible = True
      End If
      End If
    Next
    Next K
    End Sub
    






  • di mb data: 13/10/2016 13:53:59

    ottimo misterx

    prima di chiudere aspetto ancora la proposta di Alfredo che saluto così "allargo i miei orizzonti" in VBA

    grazie per l'aiuto

    buon pomeriggio



  • di alfrimpa data: 13/10/2016 15:55:19

    Ciao mb

    Sto provando a concretizzare la mia idea ma al momento non riesco per cui penso tu possa usare l'ottima soluzione datati da Mister_x che saluto.

    Alfredo





  • di mb data: 13/10/2016 17:36:56

    Ok Alfredo come anticipato non ho fretta serve solo per ampliare le mie conoscenze
    Buona serata



  • di Mister_x (utente non iscritto) data: 13/10/2016 17:52:19

    ciao MB

    si potrebbe anche utilizzare una lista di tutti i fogli, vedere quelli nascosti e quelli non e con
    un worksheet_beforedoubleclick() attivare e disattivare questi dalla lista di comando nel
    Mio Foglio (NascondiScopri) che e' presente nel file che ti posto con le due sub() inserite nel suo ModuloFoglio

    ciao


     
    Option Explicit
    
    Sub ListaFogli()
    Dim sh As Worksheet
    Dim nriga As Long
    Dim StatoF As Integer
    nriga = 1
    Range("A1:B100").ClearContents
    For Each sh In Worksheets
     If sh.Name <> "NascondiScopri" Then
      Cells(nriga, 1) = sh.Name
      StatoF = sh.Visible
       If StatoF = 0 Then
        Cells(nriga, 2) = "Nascosto"
       Else
        Cells(nriga, 2) = "Visibile"
       End If
      nriga = nriga + 1
     End If
    Next
    End Sub
    
    Private Sub worksheet_beforedoubleclick(ByVal target As Range, cancel As Boolean)
    If Intersect(target, Range("A1:A100")) Is Nothing Then Exit Sub
    Dim StatoF As Integer
    ''Application.ScreenUpdating = False
        On Error GoTo salta
        StatoF = Sheets(target.Value).Visible
      If StatoF = 0 Then
        Sheets(target.Value).Visible = True
      Else
        Sheets(target.Value).Visible = False
      End If
    salta:
    Call ListaFogli
    ''Application.ScreenUpdating = True
    End Sub
    
    






  • di Mister_x (utente non iscritto) data: 13/10/2016 17:55:18

    dimenticato

    basta fare solamente un doppioclic su una cella in colonna A:A da 1 a 100

    riciao





  • di mb data: 13/10/2016 18:29:38

    Ciao mister x
    Sono sempre più convinto che il mondo di vba e come guardare il mare .... non sai mai dove comincia e non vedi dove finisce
    Adesso non posso provare ma per quel poco che ci capisco leggendo le sub postate ritengo che sia un altra soluzione molto interessante
    Grazie



  • di alfrimpa data: 13/10/2016 20:27:02

    Ciao mb

    Sono riuscito a concretizzare l'idea che mi frullava in testa e ti allego il file Jade.xlsm dove trovi le macro che vedi sotto.

    A te credo sia inutile spiegarti come funziona.

    Le listbox sono multiselect quindi puoi selezionare più elementi per volta.

    Fammi sapere cosa ne pensi.

    Alfredo

     
     
    Private Sub CommandButton1_Click()
        Dim i As Integer
            For i = 0 To ListBox1.ListCount - 1
                If ListBox1.Selected(i) Then _
                  Worksheets(ListBox1.List(i)).Visible = False
            Next i
        Unload Me
    End Sub
    
    Private Sub CommandButton2_Click()
        Dim i As Integer
            For i = 0 To ListBox2.ListCount - 1
                If ListBox2.Selected(i) Then _
                  Worksheets(ListBox2.List(i)).Visible = True
            Next i   
        Unload Me
    End Sub
    
    Private Sub UserForm_Initialize()
    Dim i As Integer
    For i = 1 To Sheets.Count
        If Sheets(i).Visible = True Then
            Me.ListBox1.AddItem Sheets(i).Name
            Else
            Me.ListBox2.AddItem Sheets(i).Name
        End If
    Next i
    End Sub
    
    
    
    






  • di mb data: 13/10/2016 22:10:01

    Ciao a tutti

    Grazie anche ad Alfredo magnifica la soluzione della listbox a cui non avevo pensato ma è molto utile specie nel caso ci siano più fogli, che come nel caso postato precedentemente si riferisce alle nazioni e non si sa neppure quanti sono e si può perdere traccia ( specie alla mia età ....... )

    Molto bella e utile anche la soluzione di misterx specie per la possibilità si inserire e togliere anche in questo caso fogli e avere l'aggiornamento dell'elenco fogli sui quali andare a lavorare

    Bene nel ringraziarVi vi auguro una buona serata e considero Risolto magnificamente l'argomento






  • di alfrimpa data: 13/10/2016 22:34:05

    Grazie mb dei complimenti e del riscontro

    Alfredo