Login Registrati
Stai vedendo 8 articoli - dal 26 a 33 (di 33 totali)
  • Autore
    Articoli
  • #35088 Score: 0 | Risposta

    Natale
    Partecipante
      1 pt

      Ciao, vecchio frac!

      Penso di averla testata a fondo e ti dico i 2 problemi che riscontro:

      1) confermo che la verifica manuale funziona solo sulla prima riga; per farla funzionare correttamente ho modificato il tuo codice così (non salvato nel file che ti allego):

      Option Explicit
      
      Sub Verifica_Click()
          Range("C2").Value = Range("C2").Value
          Range("C3").Value = Range("C3").Value
          Range("C4").Value = Range("C4").Value
          Range("C5").Value = Range("C5").Value
          Range("C6").Value = Range("C6").Value
          Range("C7").Value = Range("C7").Value
          Range("C8").Value = Range("C8").Value
          Range("C9").Value = Range("C9").Value
          Range("C10").Value = Range("C10").Value
          Range("C11").Value = Range("C11").Value
          Range("C12").Value = Range("C12").Value
          Range("C13").Value = Range("C13").Value
          Range("C14").Value = Range("C14").Value
          Range("C15").Value = Range("C15").Value
          Range("C16").Value = Range("C16").Value
          Range("C17").Value = Range("C17").Value
          Range("C18").Value = Range("C18").Value
          Range("C19").Value = Range("C19").Value
          Range("C20").Value = Range("C20").Value
          Range("C21").Value = Range("C21").Value
          Range("C22").Value = Range("C22").Value
          Range("C23").Value = Range("C23").Value
          Range("C24").Value = Range("C24").Value
          Range("C25").Value = Range("C25").Value
          Range("C26").Value = Range("C26").Value
          Range("C27").Value = Range("C27").Value
          Range("C28").Value = Range("C28").Value
          Range("C29").Value = Range("C29").Value
          Range("C30").Value = Range("C30").Value
          Range("C31").Value = Range("C31").Value
          Range("C32").Value = Range("C32").Value
      
      End Sub

      Sono però certo che ci sia il modo per non scrivere ogni riga, solo che proprio non riesco.
      Ho provato, senza esito, con:

      Sub Verifica_Click()
          Dim i As Long
          
          For i = 2 to 32
                 Range("C2").Value = Range("C2").Value
          Next
      End Sub
      

      2) La tua funzione va alla grande! Ci sono però 4 celle verdi (quindi contenuto parzialmente corrispondente) che invece dovrebbero essere bianche. Ho cercato in tutti i modi di capire perché non rileva uno dei due alimenti ma non ne esco. Nello specifico:

      - cella M10: ha il contenuto esatto in V13 del foglio 2;

      - cella L11: ha il contenuto in X14 (mentre altre celle che hanno l'asterisco dentro diventano bianche, come dovrebbero);

      - cella V28: ha il contenuto in F, R, X e AC31;

      - cella S31: ha il contenuto esatto in AD34.

      Tutte le altre celle che vedi colorate (rosse, blu) e bianche sono corrette!   

      Grazie!

       

      Allegati:
      You must be logged in to view attached files.
      #35090 Score: 0 | Risposta

      vecchio frac
      Senior Moderator
        272 pts

        Naturalmente alla prima preferisco la seconda versione della tua Sub, con la correzione:

        Sub Verifica_Click()
            Dim i As Long
            
            For i = 2 to 32
                   Range("C" & i).Value = Range("C" & i).Value
            Next
        End Sub

        Ma non mi ricordo più l'utilità dell'aggiornamento manuale    ... l'intento era di scatenare l'aggiornamento solo sulla riga dove si trova il cursore e non su tutte le celle, le quali vengono aggiornate dinamicamente a mano a mano che vengono editate. A questo punto penso che l'idea dell'aggiornamento manuale sia semplicemente inutile 🙂

        Mi fai impazzire con i nomi che dai ai file   

        Mi studio il file e le tue osservazioni!

        #35091 Score: 0 | Risposta

        Natale
        Partecipante
          1 pt

          vecchio frac ha scritto:

          Ma non mi ricordo più l'utilità dell'aggiornamento manuale   

          L'utilità dipende dal fatto che la tabella del foglio 2 è creata via via, quindi a un certo punto posso (e ho) la necessità di controllare come vanno le cose. Per com'è strutturata la tua funzione, magnificamente, mi toccherebbe andare in almeno una cella per riga della tabella 1; invece, con il pulsante, faccio subito un controllo totale. Magari detta così sembra inutile, invece per me è molto utile!   

          OK, sono proprio curiosa di capire perché quelle 4 celle non rispondono come dovrebbero, ho provato in tutti i modi (che conosco) a farle funzionare!

          Inizio a pensare a come nominare l'ultimo file.   

          Grazie, buona serata!

          #35092 Score: 0 | Risposta

          vecchio frac
          Senior Moderator
            272 pts

            Carmen ha scritto:

            L'utilità dipende dal fatto che

            Ah ecco... visto che ha il suo senso di esistere, bene! allora penso che puoi conservare la tua Sub nella versione compatta, con la correzione che ti ho fatto vedere. Il fatto apparentemente strano di assegnare al valore di una cella il suo proprio valore è un vecchio trucco che si usa per consolidare in una cella il risultato di una formula in essa contenuta, ma funziona anche se c'è solo un dato normale.

            Carmen ha scritto:

            Inizio a pensare a come nominare l'ultimo file

            Nel Modulo 2 manca Option Explicit. Ricordati di mettere sempre questa direttiva in testa ai tuoi moduli.

            Ho capito dov'è l'errore... il range rw non viene correttamente inizializzato. Adesso ci penso io 🙂

            #35094 Score: 0 | Risposta

            vecchio frac
            Senior Moderator
              272 pts

              Visto che ho chiuso il browser prima di inviare il mio post, sono costretto a riscriverlo ma siccome era lungo non me lo ricordo tutto... Sono proprio rinco   

              In pratica comunque ti riallego il file corretto e rivisto. Ho rivisto anche le procedure Pulisci e Verifica.

              Una condizione da tenere presente è che nella prima riga del foglio1 ci vanno soltanto le intestazioni colonna e non altro (quindi i dati iniziano da C1). I problemi erano in una definizione errata del range da considerare e in un valore di variabile precedente che era rimasto come refuso.

              Controlla ancora e fai sapere.

              Allegati:
              You must be logged in to view attached files.
              #35098 Score: 0 | Risposta

              Natale
              Partecipante
                1 pt

                Ora mi sembra funzioni perfettamente e fino a fine mese la testerò come si deve. 

                Ho già in mente altre chicche che vorrei apportare e proverò da me ad applicarle, ma nel frattempo il tuo eccellente lavoro facilita di sicuro il mio!

                Vecchio frac, ti ringrazio davvero tantissimo!   

                P.S.: proprio perché tutto è ok non ti allego nessun file...   

                P.P.S: una curiosità, dato che mi occupo di tutt'altro e di certo VBA non è il mio pane (lo trova nel secondo foglio?) quotidiano... ma un lavoro come questo, se solo ti avessi detto dall'inizio precisamente come doveva essere (e mi pento di non averti detto altre cose, ma per ora ho approfittato abbastanza...), in quanto tempo riesci a farlo? Voglio dire: aprendo la funzione, sembra ci siano "poche" righe di codice che fanno ciò che devono! Certo, non è il numero ma come vengono scritte, ma quanto tempo serve per una cosa del genere?

                #35099 Score: 0 | Risposta

                vecchio frac
                Senior Moderator
                  272 pts

                  Se ti sembra che almeno per ora il thread sia concluso, ti invito a marcarlo come Risolto   

                  Apprezzo la battuta sul pane, è nel mio stile e di solito nessuno capisce le mie battute!   

                  Carmen ha scritto:

                  Certo, non è il numero ma come vengono scritte, ma quanto tempo serve per una cosa del genere?

                  Bè sì ci vuole un po' di tempo, per lo più credo si tratti di pazienza, pratica ed esperienza, come in tutte le cose. Come per qualsiasi altro mestiere, devi mettere in conto un certo tempo per imparare a padroneggiare uno strumento, o una lingua. Io mi sono reso conto che molti problemi si somigliano e alla fine la mia esperienza mi sta ripagando. Tutto poi è sempre migliorabile, e molte volte ci sono molte soluzioni diverse, senza contare che ognuno di noi ha il suo stile anche nel programmare.

                  Niente di magico, solo un uso accorto e performante della sintassi (VBA) e degli oggetti dell'applicativo (Excel in questo caso). Tutti hanno l'intelligenza per comprendere e padroneggiare questi argomenti: quello che ci vuole è il tempo (e la passione). E anche capire che si fanno piccoli passi per scalare la montagna, e alla fine si arriva in cima   

                  Torna pure quando vuoi anche per affinare, aggiustare, aggiungere, o solo per chiedere perché una certa cosa si fa in un certo modo. A noi fanno piacere gli utenti che vanno soddisfatti, e ancor più piacere quelli che ritornano   

                  #35100 Score: 0 | Risposta

                  Natale
                  Partecipante
                    1 pt

                    Tornerò di sicuro!   

                    Ancora grazie, a maggior ragione per il tanto tempo dedicatomi!

                    Buona serata!

                  Login Registrati
                  Stai vedendo 8 articoli - dal 26 a 33 (di 33 totali)
                  Rispondi a: Confronto celle
                  Gli allegati sono permessi solo ad utenti REGISTRATI
                  Le tue informazioni: