- Scrivere le intestazioni del foglio;
- aggiungere le date per creare la pagina col calendario del mese;
- aggiungere i bordi in modo da organizzare il tutto in una griglia;
- aggiungere la scritta di coda.
Ecco la prima routine che chiama tutte le altre, nel modulo che si occupa della formattazione del foglio, insieme alle variabili dichiarate per questo modulo:
Option Explicit Dim Riga As Integer Dim Colonna As Integer Dim primaRiga As Integer Dim primaColonna As Integer Dim Mese As Integer Dim Anno As Integer Sub formattaFoglio(r As Integer, C As Integer, M As Integer, Y As Integer) 'inizializza le variabili colonna e riga, e ne copia i valori iniziali per preservarli, nelle 'variabili PrimaColonna e PrimaRiga Riga = r Colonna = C Mese = M Anno = Y primaRiga = Riga primaColonna = Colonna scriviIntestazioni aggiuntaDate creazioneGriglia scrittaDiCoda copiaMenu scorri impostazioniStampa End SubFocalizziamoci sulle variabili:
Inizialmente avevo l'idea di rendere facilmente modificabile la posizione del foglio da stampare all'interno del foglio di lavoro di Excel, quindi l'ho abbandonata, ma è residuato del codice relativo a quello scopo...
Volendo lo potrei anche eliminare, quel codice, dal momento che quella mi sembra un'idea inutile e buona solo a confondersi durante la programmazione.
Ho un modulo di variabili e costanti globali che sono queste:
Public Const Riga = 1 Public Const Colonna = 1 Public Const scartoTabella = 4 Public Const scartoMenu = 3 Public Bersaglio As Range Public Const Centralina = "Foglio1"Prendiamo in esame solo Riga e Colonna.
Con questo codice sarebbe facile cambiare posizione in quanto sarebbe sufficiente soltanto modificare la costante Riga e/o la costante Colonna per poi, dato un idoneo codice, spostare tutto l'apparato, ma dal momento che non voglio farlo più potrei eliminare tranquillamente le due costanti Riga e Colonna.
Queste però vengono usate nella prima routine, vista in precedenza, quando viene chiamata la routine formattaFoglio, in questo modo:
.... formattaFoglio Riga, Colonna, Month(d), Year(d) 'formatta il foglio secondo lo schema ......che poi, essendo pubbliche, è anche un po' ridicolo passarle come parametri dal momento che la routine può vederle direttamente...
Dunque se elimino le costanti devo modificare la firma della routine formattaFoglio e la sua chiamata, dando per scontato che il valore di Riga e Colonna è fisso a 1.
Vediamo la dinamica in formattaFoglio:
Option Explicit Dim Riga As Integer Dim Colonna As Integer Dim primaRiga As Integer Dim primaColonna As Integer Dim Mese As Integer Dim Anno As Integer Sub formattaFoglio(r As Integer, C As Integer, M As Integer, Y As Integer) 'inizializza le variabili colonna e riga, e ne copia i valori iniziali per preservarli, nelle 'variabili PrimaColonna e PrimaRiga Riga = r Colonna = C Mese = M Anno = Y primaRiga = Riga primaColonna = Colonna ...Ecco: ho delle variabili locali del modulo formattazioneFoglio, il cui nome è uguale a quello delle costanti.
Quando le costanti vengono passate come parametro (? cosa inutile) queste variabili locali assumono il valore delle costanti, e quindi potranno essere cambiate di valore nel corso del modulo senza influenzare il valore base di Riga e Colonna mantenuto dalle costanti.
Ma io, dando per fissi Riga e Colonna uguali a 1, posso benissimo, tolte le costanti, uguagliare le variabili locali di questo modulo a 1.
Sub formattaFoglio(M As Integer, Y As Integer) Riga = 1 Colonna = 1 Mese = M Anno = Y primaRiga = Riga primaColonna = Colonnae chiamare questa routine, ovviamente, dalla routine aggiungiFoglio, con:
formattaFoglio Month(d), Year(d)...che funziona perfettamente (ho fatto la prova).
Adesso vediamo come va avanti questa routine:
... Riga = 1 Colonna = 1 Mese = M Anno = Y primaRiga = Riga primaColonna = ColonnaLa variabile locale Mese viene eguagliata al parametro M e la variabile locale Anno viene eguagliata al parametro Y.
Con questi, la routine aggiungiFoglio passa il valore calcolato del mese e dell'anno di cui fare il calendario. Ricordo il codice:
formattaFoglio Month(d), Year(d)...sarebbero mese e anno della data calcolata del mese successivo.
Quindi le variabili locali primaRiga e primaColonna vengono eguagliate alle variabili locali Riga e Colonna: anche questo è inutile dal momento che Riga e Colonna variabili locali sono date per uguali a 1, in quanto ogni volta che, nonostante Riga e Colonna si saranno modificate nel corso del modulo, per fare riferimento alla prima riga e alla prima colonna basterà mettere il numero 1.
Il codice diventa quindi questo:
Sub formattaFoglio(M As Integer, Y As Integer) Riga = 1 Colonna = 1 Mese = M Anno = Y scriviIntestazioni aggiuntaDate creazioneGriglia scrittaDiCoda copiaMenu scorri impostazioniStampa End SubQuindi, posti i punti di partenza riga e colonna e presi i parametri relativi alla data calcolata, si eseguono una per una tutte le routines che formattano il foglio.
Nessun commento:
Posta un commento