Sviluppare funzionalita su Microsoft Office con VBA Nascondere colonne sulla base di un risultato

Login Registrati
Stai vedendo 14 articoli - dal 1 a 14 (di 14 totali)
  • Autore
    Articoli
  • #18652 Score: 0 | Risposta

    FabioM

      Buongiorno, sono nuovo e girando in lungo e in largo sul forum ed in generale sulla rete non trovo soluzione al mio problema. Premetto che di VBA non ho le basi è quel poco che faccio lo metto in atto modificando minimamente le macro o scopiazzando codici in rete. 

      Vi spiego in dettaglio perché non posso allegare il file. Voglio far in modo che le colonne da I ad AV si nascondano autonomamente se al rigo 2 di ogni colonna compaia una lettera es. “x” o un numero dato dal risultato di una formula SE. 

      So che per chi mastica VBA è una passeggiata ma non riesco e non trovò quello che fa per me, spero abbiate la pazienza per aiutarmi.

      Grazie

      #18654 Score: 0 | Risposta

      vecchio frac
      Senior Moderator
        272 pts

         

        FabioM ha scritto:

        se al rigo 2 di ogni colonna compaia una lettera es. “x” o un numero dato dal risultato di una formula SE

         

        Dunque l'utente digita qualcosa in riga 2 e se immette una "x" si nascondo le colonne indicate. Parimenti accade se la formula =SE (inserita non sappiamo dove) restituisce un numero.

        Domanda: ma vengono rivisualizzate queste colonne nascoste o no? Perchè non capisco la ratio: metti che inserisco la "x" in A2, si nascondono tutte le colonne, e poi queste rimangono nascoste... è ininfluente qualsiasi operazione successiva: le colonne sono già nascoste ed è inutile rinasconderle 🙂

        #18667 Score: 0 | Risposta

        FabioM

          Ciao vecchio frac

          Le colonne che devono nascondersi o scoprirsi sono dalla I alla AV, per ogni colonna alla riga 2 c’è una fx SE che mi restituisce o meno una “x”. Se il risultato della funzione è “x” la colonna deve sparire altrimenti è visibile, ogni colonna deve essere indipendente perché ha la sua funzione alla riga 2. 

          Spero di essermi spiegato meglio. 

          #18668 Score: 0 | Risposta

          PMC77
          Partecipante
            18 pts

            Se ho più o meno capito dovresti farti un ciclo di scansione delle righe del tuo foglio e se una colonna rispetta la condizione(tipo contiene "X" o qualcosa di simile) -->

            Columns("I:AV").EntireColumn.Hidden = True

             

            #18669 Score: 0 | Risposta

            patel
            Moderatore
              51 pts

              FabioM ha scritto:

              Vi spiego in dettaglio perché non posso allegare il file.....

              Un file di esempio con dati non sensibili si può sempre allegare

              #18670 Score: 0 | Risposta

              vecchio frac
              Senior Moderator
                272 pts

                patel ha scritto:

                si può sempre allegare

                Però deve essere un utente registrato 🙂

                #18673 Score: 0 | Risposta

                FabioM

                  ciao 

                  PMC77 ha capito cosa intendo fare, ed ha anche saputo spiegarlo nel modo corretto, se una o più colonne rispettano la condizione in questo caso “x” allora vengono nascoste altrimenti sono visibili. 

                  È una cosa fattibile?

                  Vorrei allegarlo ma sto scrivendo con il telefono, con il pc non ho la possibilità di comunicare con l’esterno. Solo via email posso mandarlo, se c'è modo ditemi che lo faccio. Grazie e scusate ma non sono molto bravo con i forum in generale. 

                  #18674 Score: 0 | Risposta

                  PMC77
                  Partecipante
                    18 pts

                    Ci provo "a naso"...

                    Sub CercaNascondi()

                    Dim RowMin as Integer

                    Dim RowMax as Integer

                    Dim shXXXs Worksheet
                    Set shXXX ThisWorkbook.Sheets("NomeFoglio")

                    RowMin = 5
                    RowMax = shXXX.Range("A1", shXXX.Range("A1").End(xlDown)).Rows.Count 
                     While RowMin <= RowMax
                       
                            If shXXX.Range("A" & RowMin).Value = "X" And shXXX.Range("B" & RowMin).Value = "Y" Then
                                       shXXX.Columns("I:AV").EntireColumn.Hidden = True

                            EndIF
                            RowMin = RowMin + 1
                           
                        Wend

                    End Sub

                    #18677 Score: 0 | Risposta

                    FabioM

                      Forse sto sbagliando ma io lo sto scrivendo nel foglio e mi da errore di compilazione sia quando ho scritto Dim shXXXs Worksheet ... che quando proseguendo RowMax=shXXX.Range (“A1”)... 

                      purtroppo non ho le basi di vba e per me è arabo quindi posso solo copiare 

                      #18678 Score: 0 | Risposta

                      FabioM

                        Comunque le celle interessate sono da “I2” a “AV2” queste contengono una formula SE che mi restituisce “x” in determinate condizioni, quando il risultato è “x” si devono nascondere le colonne corrispondenti. 

                        #18679 Score: 0 | Risposta

                        PMC77
                        Partecipante
                          18 pts

                          Dim shXXX as Worksheet
                          Set shXXX = ThisWorkbook.Sheets("NomeFoglio")

                           

                          Se però non sai usare assolutamente nulla di VBA la vedo dura!

                          Il mio è stato un errore nel copia/incolla che si è mangiato qualche carattere!

                          #18680 Score: 0 | Risposta

                          FabioM

                            Set shXXX=

                            me lo da ancora in rosso “errore di compilazione” 

                             

                            #18681 Score: 0 | Risposta

                            PMC77
                            Partecipante
                              18 pts

                              In "NomeFoglio" devi ovviamente mettere il nome del foglio Excel che utilizzi tu!

                               

                              #18693 Score: 0 | Risposta

                              FabioM

                                buongiorno 

                                il nome foglio io l’ho messo ed ho scritto tutto il codice indicato da PMC77 non in un modulo ma in (codice) foglio, non succede niente. Ho provato con un foglio vuoto, inserito il codice è digitato le “x” alla riga 2 delle colonne interessate ma ancora nulla 🙁

                                non ho speranza?

                              Login Registrati
                              Stai vedendo 14 articoli - dal 1 a 14 (di 14 totali)
                              Rispondi a: Nascondere colonne sulla base di un risultato
                              Gli allegati sono permessi solo ad utenti REGISTRATI
                              Le tue informazioni: