Numerazione automatica di un documento.
(28/05/03)
Ovvero: come generare un numeratore automatico
(altrimenti chiamato : contatore)
Anche se abbiamo già visto come ottenere un contatore in procedure presenti
in questa sezione, continuano a pervenirmi richieste sullo specifico, per
cui provo a dedicare una pagina a questo argomento.
Diciamo subito che è un'operazione semplice e che comunque si basa su un "serbatoio"
dove esiste un numero (una cella), che a seguito di un "evento"
facciamo incrementare di una unità. Per questa operazione useremo istruzioni
in codice vba, non volendoci affidare a uguaglianze o formule tipiche del
foglio di lavoro, che genererebbero "Riferimenti circolari" e quindi errori.
Molti sono i modi di operare, dipendono da noi e da come impostiamo il
nostro lavoro, e quindi prenderemo in esame alcuni esempi, che potranno
servire per chiarire i concetti di base. Gli esempi prendono tutti in esame
la compilazione di una fattura nella quale, ad ogni nuova fattura, dovremo
assegnare un numero successivo all'ultimo usato. Useremo quindi una cella
che conterrà il numero fattura, esempio la F10.
La F10 sarà quindi il nostro "serbatoio", che potrà essere utilizzato anche
se all'inizio sarà vuoto, o se proprio vogliamo, inseriremo il valore zero
(0).
L'incremento lo otteniamo con questa semplice istruzione:
Range("F10") = Range("F10").Value + 1
cioè : il valore che si trova il F10 sarà uguale allo stesso valore più uno.
Ed Excel esegue docile, se F10 era vuoto, dopo questa istruzione sarà 1, se
era 22, diventerà 23, e così via.
Stabilita l'istruzione, dobbiamo decidere quale evento scegliere per
lanciarla. Vediamone alcuni:
Creare una
macro da associare ad un pulsante che nomineremo ad esempio :"Numero
Fattura". In questo caso ad ogni pressione sul pulsante, incrementiamo il
numero. In questo modo però possiamo dimenticarci di premere il pulsante,
e quando registreremo la fattura, la registriamo con un numero che
esisterà già. Conviene affidarci ad un sistema che automatizzi
l'istruzione sopra citata, evitandoci errori dovuti a dimenticanze.
Potremmo sfruttare eventi collegati all'apertura o all'attivazione del
foglio di lavoro dedicato alla compilazione del documento, ma non va bene
perchè se apriamo il foglio per sola consultazione, facciamo scattare il
contatore incrementando il numero quando invece non lo vogliamo. Potremmo
sfruttare l'evento Worksheet_Change, nel quale potremmo inserire una
condizione, cioè se la cella che porterà il nome del cliente sarà diverso
da vuoto, allora incrementiamo il contatore. Ma non va bene neanche questa
soluzione perchè se avremo sbagliato cliente, cancelliamo il nome e ne
scriviamo un'altro, si incrementa di nuovo il contatore. Allora?
Sicuramente,
in ogni progetto degno di tale nome, avremo previsto un pulsante associato
ad una macro con le istruzioni per la registrazione, in un foglio chiamato
"Archivio", dei dati riguardanti la fattura compilata: bene,
inseriremo l'istruzione sopra citata ad inizio macro,
prima delle istruzioni di registrazione. In questo modo, prima che inizino
le registrazioni avremo il nostro contatore incrementato col giusto
valore, che verrà registrato insieme agli altri dati.
In genere,
nei progetti ben congegnati, è solo dopo che è avvenuta la registrazione,
che passeremo alla stampa del documento. Anche in questo caso la stampa
che otterremo riporterà il giusto numero di fattura.
Potremo a
questo punto avere previsto un pulsante per il salvataggio di una copia
della fattura (sfruttando le istruzioni contenute nel paragrafo precedente
"Salvare una Fattura").
Un
accorgimento poi sarà quello di NON cancellare il dato nella cella
numeratore quando a fine registrazione e successiva stampa e/o salvataggio
copia, faremo pulire le celle (con ClearContents) con l'apposita macro che
avremo creato, per predisporre il foglio ad una nuova fattura. Poco
importa se nella cella del numero fattura vediamo il numero della fattura
precedente, sappiamo che si incrementerà quando premeremo il pulsante
"Registra fattura".
A fine
lavoro, non ci dovremo mai scordare di salvare la cartella, oppure
predisporre le istruzioni per il salvataggio in automatico della cartella.
Esistono, come già
detto, parecchi sistemi per creare un incremento nel numero fattura,
compreso quello di andarsi a leggere nel foglio "Archivio" l'ultimo numero
registrato, ed incrementarlo di 1, ma dovremo comunque scegliere l'evento
giusto perchè questo avvenga. Credo di avere un pò chiarito questi semplici
concetti. Queste informazioni sono sfruttabili su schemi fattura
autocostruiti e non sui "Modelli" che peraltro non uso e non ho mai usato.
Buon lavoro.
prelevato sul sito http://ennius.interfree.it |