› Excel e gli applicativi Microsoft Office › Confronto celle
-
AutoreArticoli
-
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 SubSono 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 Sub2) 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.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 SubMa 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!
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!
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.
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 🙂
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.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?
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!
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
-
AutoreArticoli
