Nascondi Scopri righe



  • Nascondi - Scopri righe
    di Giuliano46 (utente non iscritto) data: 04/11/2013 17:08:39

    Buongiorno a tutti.
    Chiedo per favore il vostro aiuto. Spero di essere nel posto giusto.

    Non conosco il linguaggio VBA ma vedo sul sito che può fare cose eccezionali.
    Vorrei scrivere due macro in VBA per ottenere quanto descritto:
    Su un foglio excel nella colonna A righe da 1 a 100, può essere anche di più, ho un risultato dato da una formula pari a 0 oppure 1. In A101 scrivo "fine"
    Desidero una macro per chiudere automaticamente tutte le righe contenenti 0 interrompendosi alla cella "fine"
    Poi una macro che riapra tutte le righe che contengano sia 0 sia 1 che si interrompa alla cella "fine".
    Meglio se le macro possano partire da due icone inserite in una barra personalizzata di excel.
    Spero di essere stato chiaro.
    Un grande grazie a chi vorrà risolvere questo problema per me difficile.
    Giuliano46


  • macro da principiante
    di canapone (utente non iscritto) data: 04/11/2013 17:43:13


    Ciao,

    sono alle prime armi con il VBA.

    Faccio comunque - con molto coraggio- un tentativo.

    Saluti
     
    Sub nascondizero()
        Dim x As Integer, y As Integer
                     For x = 2 To 101
                If Cells(x, 1).Value = 0 Then
                    Rows(x).EntireRow.Hidden = True
                End If
            Next x
        
    End Sub
    
    Sub scopritutto()
        Dim x As Integer, y As Integer
                     For x = 2 To 101
                  Rows(x).EntireRow.Hidden = False
               Next x
        
    End Sub
    
    
    
    


  • y as integer
    di canapone (utente non iscritto) data: 04/11/2013 17:44:30

    Ciao,

    stavo divertendomi con un'altra macroi

    y as integer


    non serve

    Saluti



  • di Vecchio Frac data: 04/11/2013 17:52:19

    @Canapone, perchè alle prime armi? ^_^

    La mia proposta, come quella di canapone, analizza le righe del range e se trova "fine" si ferma prima altrimenti lo spazzola tutto.
    La sub scopri() invece è più semplice.
     
    Sub nascondi()
    Dim v As Range
        For Each v In [a1:a100]
            If LCase(v) = "fine" Then Exit For
            v.EntireRow.Hidden = (v = 1)
        Next
    End Sub
    
    Sub scopri()
        [a1:a100].EntireRow.Hidden = False
    End Sub





  • Grazie
    di Giuliano46 (utente non iscritto) data: 04/11/2013 18:15:00

    Vi devo un grosso GRAZIE a tutti !!!
    Queste VBA funzionano a meraviglia.
    Giuliano46
     
    Sub nascondi()
    Dim v As Range
        For Each v In [a1:a27]
            If LCase(v) = "fine" Then Exit For
            v.EntireRow.Hidden = (v = 0)
        Next
    End Sub
    
    Sub scopri()
        [a1:a100].EntireRow.Hidden = False
    End Sub



  • di Vecchio Frac data: 04/11/2013 20:32:18

    v.EntireRow.Hidden = (v = 0)
    la correzione non ti è sfuggita, stavo per precisarlo io, avevo invertito nel mio codice la condizione iniziale per cui nascondevo le righe valorizzate a uno (la richiesta iniziale era di nascondere le righe con gli zeri).
    Hai letto e interpretato bene :)





  • di Giuliano46 data: 04/11/2013 22:56:58

    Discussione risolta.
    Grazie ancora Vecchio Frac