nascodere colonne



  • nascodere colonne
    di mb data: 23/06/2017 14:15:50

    Buongiorno

    ho un file con diverse colonne che indicano i mesi nello specifico attualmente ho molti anni perché preferisco avere una storia dei dati

    detto questo chiedo il vostro aiuto :

    l'idea è seleziono la cella relativa al mese di giugno ed il sistema mi lascia visibili gli ultimi 13 mesi ( quindi vedo giugno 2016 giugno 2017 )

    se seleziono febbraio mi visualizza febbraio 2016 a giugno 2017 )

    quindi come spero di aver spiegato in modo comprensibile in alcuni casi mi servono i 13 mesi e gli altri li nascondo

    inserisco esempi nei fogli2 e foglio3

    p.s non so se nello stesso foglio si posso far funzionare tutte e due le richieste con evento worksheet change
    grazie



  • di patel data: 23/06/2017 22:50:08

    non mi è chiaro il problema, comunque per nascondere la colonna n del foglio f
     
          Sheets(f).Columns(n).Hidden = True






  • di mb (utente non iscritto) data: 23/06/2017 23:21:24

    Grazie patel ma nel tuo caso la colonna è fissa io invece ho bisogno di nascondere più colonne
    Nel primo caso seleziono la cella del mese x e lascio scoperte le 12 colonne che sono a se tutte le altre le nascondo



  • di mb (utente non iscritto) data: 23/06/2017 23:27:56

    Scusa
    Se vuole dire sinistra
    Sono col cellulare. ...



  • di patel data: 24/06/2017 10:11:45

    basta inserire l'istruzione in un ciclo.
    E' solo un esempio visto che non ho capito cosa vuoi fare 
     
    for n = 12 to 5 step -1
      Sheets(1).Columns(n).Hidden = True
    next
    
    oppure senza ciclo
    
      Sheets(1).Columns("G:J").Hidden = True
    
    






  • di mb data: 26/06/2017 13:10:25

    Ciao patel

    non so come fare a spiegarmi nel file foglio2 ho riportato il risultato finale che desidererei ottenere

    provo a rispiegarmi

    1 seleziono la cella relativa al mese di giugno per indicare il punto di partenza
    2 nascondo tutte le colonne a sx dalla 14 fino alla penultima

    se sapessi scrivere vba direi:

    x = cella selezionata

    conta le colonne a sinistra

    quando arrivi alla fine nascondi da X - 13 fino alla fine -1 perché contiene il nominativo Colonna A)

    spero sia più chiaro




  • di mb data: 26/06/2017 13:38:08

    Ciao provo ad andare con ordine

    primo pezzo risolto

    così identifico l'ultima colonna che voglio rendere visibile del prospetto

    quindi adesso che ho selezionato giugno mi dice che è la 19°

    quindi adesso devo nascondere da colonna due a colonna 6 ( 6 perché è la differenza tra 19 giugno -13 mesi, che mi permette di verificare i dati da un'anno all'altro )




     
    Private Sub seleziona_colonna()
    Dim x As String
    x = ActiveCell.Column
    End Sub



  • di mb data: 26/06/2017 13:51:49

    Bene direi primo punto quasi risolto
    non ho molta confidenza con le variabili Dim

    le ho definite in modo corretto

    così funziona



     
    Sub Macro3()
    '
    ' Macro3 Macro
    '
    
    '
    
    ' seleziona_colonna_e_nascondi
    
    Dim x As String
    Dim Y As String
    x = ActiveCell.Column
    
    ' conta le colonne l'ultima colonna che vuoi nascondere
    Y = x - 13
    
    ' nascondi le colonne che non vuoi visualizzare
    
    Dim i As Integer
    For i = 2 To Y
    Columns(i).EntireColumn.Hidden = True
    
    Next
    End Sub



  • di mb data: 26/06/2017 13:56:59

    faccio ancora delle prove ma direi che esaminando meglio la necessità funziona anche per il secondo caso

    aspetto conferme per le variabili e intanto aggiungo un pulsante per scoprire le colonne in caso di necessità




  • di Vecchio Frac data: 26/06/2017 16:12:29

    Che conferme aspetti per le variabili? Le dimensioni assegnando il tipo corretto a seconda del valore che devono contenere.
    Column è un numero quindi X deve essere di tipo numerico (As Long per capirci, un tipo di numero abbastanza grande da contenere numeri molto grandi, perchè Integer arriva fino a 32768). Anche i, il cui valore massimo arriva fin a Y, dovrebbe essere dimensionato col medesimo tipo (As Long).





  • di mb data: 26/06/2017 16:26:42

    Perfetto

    Grazie alla prossima