"
Crearsi una Agenda Appuntamenti: prima parte. - dal 04/09/04 pagina vista: volte Di Agende per Appuntamenti, l'universo del software ne è pieno, ma ne faremo una "nostra", usando Excel ed il suo vba. Questo esercizio, oltre a utilizzare Excel e quindi di poter personalizzare al massimo il programma, ognuno se la può realizzare in proprio come meglio crede, rende interessante il vedere come predisporre le opportune istruzioni, e le soluzioni adottate per esempio, per il controllo inserimento dati nelle TextBox della UserForm usata come marchera di introduzione e/o consultazione appuntamenti. Inoltre ci possono servire per familiarizzarci con qui benedetti tipi di dati: Data e/o Orario. Infatti uno dei problemini più ostici in vba, è rappresentato dal fatto, lavorando con date od orari, del riconoscimento del "tipo di dato" inserito in una TextBox, e non scordiamoci che impostando un'agenda appuntamenti, questi sono sempre rappresentati da date e da orari. Inoltre se nella scittura di un orario non rispettiamo una certa sintassi (le ore devono essere separate dai minuti da un punto e NON una virgola, e bisogna sempre scrivere sia l'ora sia i minuti, anche se l'ora è intera: le ore 9 vanno scritte 09.00 o anche 9.00, e NON 9 e basta)) Excel poi si lamenta o fornisce registrazioni sballate. Vediamo intanto l'impostazione possibile di una tabella campione; i dati inseriti sono di pura fantasia:
E sotto vediamo la UserForm, che contiene tutte le routine; la freccia rossa indica un "controllo" necessario al progetto: il MonthView. Questo "controllo" è un controllo .ocx e serve per scorrere i mesi (i due pulsantini nella parte superiore) e all'interno del mese scelto, selezionare il giorno di cui vogliamo prendere la data. Il controllo si inserisce dalla "casella degli strumenti" nell'editor di visual basic, cliccandoci sopra col destro del mouse, e scegliendo "Controlli Aggiuntivi": nella finestra dei "Controlli aggiuntivi" bisognerà mettere un segno di spunta al controllo "Microsoft MontView Control 6.0" corrispondente al file MSCOMCT2.OCX contenuto nella cartella C:\Windows\System32 . Se qualcuno fosse sprovvisto di questo file, necessario al progetto, può qui scaricarlo e poi decomprimerlo nella cartella indicata. File MSCOMCT2.zip 332 Kb Di questo controllo useremo la proprietà Value per identificare la data corrispondente al giorno che avremo selezionato nel controllo stesso, e sfruttando il suo evento DateClick, traseriremo la data nella TextBox1, così:
Sfruttiamo quindi l'azione che compiamo cliccando su un giorno, nel MonthView, per ottenere nella TextBox1 la data scelta, e a seguire, inseriamo le istruzioni che cercheranno nella colonna A del database, a partire dalla quinda riga, tutte le date che corrisponderanno a quella che sarà nella TextBox1, caricando per ogni data trovata, nella ListBox1 l'orario di ogni data trovata e il relativo appuntamento. Useremo per cercare le date un Ciclo For Each Next, che trovando una cella corrispondente alla data selezionata, e caricheranno con Offset i dati contenuti nelle due celle a sinistra. Al termine del ciclo, facciamo avvisare con un messaggio: se saranno state trovate date, le contiamo usando un contatore (una variabile che si incrementa di una unità ad ogni ciclo) e ne forniamo il numero, altrimenti avvisiamo che non esistono date. Vediamo un esempio: clicchiamo sulla data 11 (gennaio 2004) (evidenziata in grigio), la vediamo nella TextBox1, e nelle due ListBox vengono caricati con AddItem, i dati correlati alle date trovate, e il messaggio di avviso. Poichè queste istruzioni si attivano ad ogni click sul MonthView, cambiando giorno, abbiamo bisogno di "vuotare" le due ListBox dei dati che contengono, per predisporle a ricevere i dati che la nuova ricerca reperirà. Per "vuotare" le ListBox usiamo il metodo RemoveItem. Per non creare una routine molto lunga, anzichè inserire le istruzione di "vuotatura" ad inizio della routine Private Sub MonthView1_DateClick(ByVal DateClicked As Date) usiamo un'altro evento collegato: l'evento Change della TextBox1, attivato appunto dalla prima istruzione dell'evento DateClick, la TextBox1 = MonthView1.Value Poi vedremo le routines, ma continuiamo l'analisi dei procedimenti. Come ogni Agenda che si rispetti, dobbiamo prevedere la possibilità di inserire nuovi appuntamenti, per questo ci affideremo all'unico CommandButton presente sulla UserForm, di cui sfrutteremo l'evento Click per eseguire delle istruzioni. Abbiamo bisogno, per l'inserimento di nuovi appuntamenti, di scrivere una data, e ce l'abbiamo cliccando sul MonthView, poi dovremo scrivere l'orario nella TextBox2, e quindi il motivo dell'appuntamento nella TextBox3. Per evitare dimenticanze per la data e per l'orario, useremo delle istruzioni che controllino che le TextBox contengano dati, ma dovremo controllare anche che l'orario sia scritto con la giusta sintassi (tipo 09.30), e che l'orario sia scritto usando il punto come separatore, e non la virgola: per quest'ultimo controllo, sfrutteremo l'evento Change della TextBox2, così la verifica avviene mentre stiamo scrivendo; verremo fermati e costretti a digitare la correzione. Per il controllo della sintassi invece sfrutteremo il Click del Commandbutton.. Dobbiamo però compiere un ulteriore controllo prima che avvenga la registrazione sul foglio: dobbiamo controllare che non esista già un appuntamento allo stesso giorno e alla stessa ora. Sfrutteremo per questo un ciclo che legga prima tutte le date esistenti uguali alla data scelta, e per ogni data controlliamo se esiste già un orario uguale: se esiste, usciamo dalla routine e avvisiamo con un messaggio, altrimenti usiamo un ciclo While che reperisca la prima riga libera e lì incolli i dati. Abbiamo quasi finito: manca ancora un'ultima cosa; un ordinamento basato prima sulle ore, e a seguire sui giorni: questo ci consente di avere le date ordinate per data e gli orari ordinati per ora. Non possiamo agire viceversa in quanto l'ultimo ordinamento è determinante, e farlo per ultimo sulle date ordinerebbe queste, ma non gli orari.. Vediamo ora le routine:
Le routine non le commento, trattandosi di routine già ampliamente usate e commentate in altri articoli sui nostri siti. File scaricabile e consultabile : Appuntamenti.zip 15 Kb Buon lvoro. prelevato sul sito www.ennius.altervista.org |