Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2008
    Messaggi
    112

    [excel VBA] scopri e nascondi

    ho un cartella con una serie di fogli e in ciascun foglio ci sono delle colonne gialle dove il contenuto della prima cella è la parola "nascondi".

    vorrei creare in ogni foglio due pulsanti, scopri e nascondi, a cui associare 2 macro che se attivate scoprono o nascondono tutte le colonne gialle all'interno del foglio sul quale si è cliccatto il rispettivo pulsante. la macro non dovrebbe considerare il colore della cella, ne dare debug nel caso non trovi colonne da scoprire o nascondere.
    il numero di colonne da monitorare per ogni foglio in teoria non dovrebbe superare mai le 200 ( spero)

    qualsuno può darmi due dritte?


    grazie


  2. #2
    per nascondere una colonna (in questo esempio al A):

    Columns("A:A").Select
    Selection.EntireColumn.Hidden = True

    per renderla visibile:

    Columns("A:A").Select
    Selection.EntireColumn.Hidden = False
    __________________________________________________ _

    per nascondere più colonne:

    Range("A:A,B:B,E:E,G:G").Select
    Selection.EntireColumn.Hidden = True

    per renderle visibile:

    Range("A:A,B:B,E:E,G:G").Select
    Selection.EntireColumn.Hidden = False

    se vuoi puoi anche inserire una gestione degli errori, esempio:


    On Error Resume Next
    Range("A:A,B:B,E:E,G:G").Select
    Selection.EntireColumn.Hidden = True

    in questa maniera l'errore non viene segnalato e il codice continua dall'istruzione successiva alla riga che lo ha generato.

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2008
    Messaggi
    112
    grazie della dritta.
    ho provato a sviluppare l'istruzione con un ciclo while in modo che vengano analizzate le prime 300 colonne del fogli, ma nonostante la macro funzioni, alla fine mi da sempre errore a livello di If Cells (.....)
    precedentemente avevo utilizzato al posto dell'if/else, il while/when, e mi dava lo stesso errore, a meno che nel primo while non dessi un valore limite del contatore < del numero di colonne da nascondere (ma questo valore è variabile e non prevedibile.
    forse dovrei aggiungere del codice all'inizio che conti il nmero di colonne da nascondere, ma la cosa mi sembra pesante, e forse presenta gli stessi problemi di debug.

    grazie in anticipo se qualcuno ha suggerimenti

    Sub Nascondi()
    '
    ' Nascondi Macro ' Nasconde le colonne gialle (con valore prima riga ="nascondi") dove sono inserite le distinte impieghi e lavorazioni '
    '
    Dim iColumn As Integer
    Dim contatore As Integer
    iColumn = 1
    contatore = 0
    Do While contatore < 300
    contatore = contatore + 1
    If Cells(1, iColumn) <> "nascondi" Then ' qui mi segna sempre errore
    iColumn = iColumn + 1
    Else Columns(iColumn).Select
    Selection.EntireColumn.Hidden = True
    iColumn = iColumn + 1
    End If
    Loop
    End Sub

  4. #4
    dunque ho creato un foglio di excel a cui ho aggiunto il codice che hai postato, non ho inserito nessun pulsante e l'ho eseguito tramite menù macro-->esegui, e tutto funziona a meraviglia.



    sarebbe da vedere il foglio da te preparato.

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2008
    Messaggi
    112
    sono un pollo

    nel mio excel ho 256 colonne ed infatti se imposto un numero di cicli inferiore a questi mi funziona tutto perfettamente....


    ciao e grazie ancora

  6. #6
    sono un pollo
    allora siamo in due, non avevo pensato che su un excel precedente al 2007 poteva essere quello il motivo. ciao e alla prossima

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.