Condividi:        

[EXCEL] Controlli su celle e righe vuote

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

[EXCEL] Controlli su celle e righe vuote

Postdi Ocimin » 03/12/06 16:13

Rieccomi a chiedervi aiuto...
Sono riuscito a programmare una macro che fa una serie di controlli e fin qui nessun problema. L'intoppo è che la macro in questione da per scontato che non si saltino delle righe all'interno delle tabelle che compongono il file e che un campo in particolare non sia vuoto. Volendo fare un sistema a prova di utonto, vi chiedo se siete a conoscenza di un qualche tipo di controllo in fase di inserimento dei dati che dia errore o avverta nel caso in cui la riga sopra alla quale si sta scrivendo non sia compilata in uno o più campi. Non solo: dovrebbe darmi anche errore se un campo in particolare della riga che sto compilando rimane vuoto.
Grazie a chi risponderà.
Ciao!

Ocimin
Ocimin
Utente Junior
 
Post: 15
Iscritto il: 05/11/06 16:55

Sponsor
 

Postdi Anthony47 » 05/12/06 14:51

Bello il neologismo "utonto".

Per quanto riguarda la domanda, quale pezzo della macro va in crisi se ci sono celle vuote?

Per gestire le celle vuote, i metodi sono tanti:
-costringi l' utonto a inserire i dati tramite una form sui cui campi fai delle verifiche;
-usi la formattazione condizionale per colorare di rosso celle o aree che non rispettano le aspettative;
-usi la Convalida dati per verificare il tipo di dati inseriti dall' utente; questo insieme alla formattazione condizionata.
-inserisci una macro di convalida che controlla la situazione dei dati riga per riga e verifichi che siano come te li aspetti.

Trovi uno spunto utile?
Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19227
Iscritto il: 21/03/06 16:03
Località: Ivrea

Postdi Ocimin » 07/12/06 20:38

La situazione è forse più complessa di come l'ho esposta...non so se c'è un modo pulito per risolverla (per pulito intendo che il programma faccia tutti i controlli del caso). Spiego la situazione. Il file in questione serve per gestire i dati di alcuni abbonamenti. Ci sono due fogli, uno con i dati degli abbonati e un altro con quelli che lo ricevono in omaggio. La macro che ho costruito serve per creare un secondo file che è quello che fine inviato alla postalizzazione per le etichette. Ora, questo secondo file è formato dagli abbonati e di seguito gli omaggi (quindi un solo foglio di lavoro). La macro quindi cosa fa? Va nel foglio abbonati e controlla il campo indirizzo (che in teoria dovrebbe essere sempre compilato,a differenza di altri che possono essere opzionali), se non è vuoto copia la riga nel secondo file e così via. Quando il campo risponde vuoto passa al secondo foglio, quello omaggi, e fa la stesso controllo incollando in coda al file due le nuove righe. E' chiaro che se il campo indirizzo di una riga risulta vuoto il processo si ferma anche se le righe continuano. Il file viene maneggiato da diverse persone, quindi le possibilità di errore aumentano. Su " strada" mi sono capitati i seguenti esempi: casa del prete di turno (indirizzo non messo perchè nel paesino tutti sanno dove vive, postino compreso), caserma dei carabinieri (vuoi che il postino non sappia dove sia?), scuola Y (ce ne sono talmente poche...l'indirizzo possiamo anche ometterlo!). Per la questione righe vuote è capitato che venisse eliminato uno degli abbonati cancellando la riga corrispondente ma non spostando in blocco tutte le righe sottostanti. Insomma, i casi non sono frequenti ma un controllo in più non mi dispiacerebbe.
Per gli spunti che mi hai dato...la casella rossa nel caso dell'indirizzo potrebbe essere già qualcosa (anche se preferirei un bell'errore che non ti lascia andare avanti, giusto per gli utonti gravi :-)). Per la riga vuota ho pensato di fare un controllo comunque su 2 o più righe sottostanti rispetto all'ultima copiata in modo da esser sicuro che non ce ne siano altre...non sarà perfetto ma le possibilità di casini dovrebbero ridursi notevolmente.
Grazie dei consigli, e in caso di altre illuminazioni non esitate a comunicarle :-)

Ocimin
Ocimin
Utente Junior
 
Post: 15
Iscritto il: 05/11/06 16:55

Postdi Anthony47 » 08/12/06 03:06

Ciao Ocimin,
non capisco perche’ ragioni sull’ indirizzo, che come spieghi puo’ essere validamente omesso, e non sull’ intestatario, che spero ci sia sempre.
E poi, perche’ dedurre di aver finito la lista sul fatto che un campo e’ vuoto e non sulla verifica che sei arrivato all’ ultima riga dell’ elenco??

Quindi:
Scegli una colonna che ha il dato essenziale (secondo me il destinatario); supponiamo che sia la colonna A.
Ti calcoli quale e’ l’ ultima riga dell’ elenco utilizzata con l’ istruzione
Codice: Seleziona tutto
LastRiga = Range("A65536").End(xlUp).Row

Imposta un ciclo
Codice: Seleziona tutto
For I = 1 To LastRiga

Dove la prima istruzione sia
Codice: Seleziona tutto
Range("A1").Offset(I, 0).Select

In modo da selezionarti in sequenza su tutte le righe fino all’ ultima usata

Quando sei sulla riga, controlla che il campo Destinatario (colonna A?) non sia vuoto, se e’ vuoto salta, se e’ pieno trasponi sul secondo file.
Codice: Seleziona tutto
Next I


Stesso ragionamento per il foglio degli omaggi.
La chiave e’ il calcolo di LastRiga col “metodo” End(xlUp) csi’ eventuali buchi vengono inseriti nel calcolo e gestiti poi dalla routine di trasposizione.

Ti torna?
Ciao,
Avatar utente
Anthony47
Moderatore
 
Post: 19227
Iscritto il: 21/03/06 16:03
Località: Ivrea

Postdi Anthony47 » 08/12/06 03:09

Anthony ha scritto:Quando sei sulla riga, controlla che il campo Destinatario (colonna A?) non sia vuoto, se e’ vuoto salta, se e’ pieno trasponi sul secondo file


Per questa azione userai le istruzioni che hai gia', non ovviamente con il Next I, che indica la ripetizione del ciclo.

Ciao.
Avatar utente
Anthony47
Moderatore
 
Post: 19227
Iscritto il: 21/03/06 16:03
Località: Ivrea

Postdi Ocimin » 08/12/06 19:14

Tutto torna eccome! Non ero a conoscenza della funzione End(xlUp).Row...l'avessi scoperta prima mi avrebbe semplificato di molto il lavoro! All'idea di rimettere mano alla macro un po' mi viene male :-P
Anche l'idea del destinatario mi pare migliore...sono quasi sicuro di averla vagliata ma di avergli preferito l'indirizzo non so per quale motivo (sarà che la macro la sviluppavo sempre in ore prossime all'alba :-))
Che dire se non grazie? Grazie :-D !
Per ora un saluto e alla prossima.

Ocimin
Ocimin
Utente Junior
 
Post: 15
Iscritto il: 05/11/06 16:55


Torna a Applicazioni Office Windows


Topic correlati a "[EXCEL] Controlli su celle e righe vuote":


Chi c’è in linea

Visitano il forum: raimea e 58 ospiti

cron