LORETTA B. forum

Linguaggi di programmazione => Problematiche Excel => Topic aperto da: micdas - Dicembre 23, 2008, 22:57:05

Titolo: Vi piacerebbe creare un calendario
Inserito da: micdas - Dicembre 23, 2008, 22:57:05
Voglio condividere con chi fosse interessato un calendario crfeato con Excel. :sei mio:

Innanzitutto occorre preparare alcuni elenchi. Per cui nel foglio2 metteremo questi elenchi:
nella colonna "A" i nomi dei mesi
nella colonna "D" la serie di numeri che vanno da 1 a 31
nella colonna "H" una serie di numeri da 1980 a 2033

Nel foglio1 disegnamo due caselle a discesa ma uno lo prendiamo dai moduli e l'altro dagli Strumenti di controllo

(http://mikevba.altervista.org/_altervista_ht/vbamod.gif) (http://mikevba.altervista.org/_altervista_ht/active-x.jpg)

Per richiamare queste barre basta fare click destro su una delle barre degli strumenti di Excel.

(http://mikevba.altervista.org/_altervista_ht/barre.gif)

Per popolare la casella a discesa presa dai Moduli:
click destro sul controllo e scegliere formato controllo per visualizzare la omonima finestra di dialogo
se ancora non selezionata, selezionare la linguetta "Controllo"
nella casella "Intervallo di input" scrivere:
Foglio2!$A$1:$A$12
(l'intervallo dove abbiamo scritto l'elenco dei mesi)
nella casella "Collegamento cella" scrivere
G1
(la cella che deve accogliere il valore da noi scelto)

(http://mikevba.altervista.org/_altervista_ht/formato_controllo.gif)

Per popolare la casella a discesa presa dagli Strumenti di controllo:
dalla barra Strumenti di controllo cliccare sull'icona con un biglietto ed una manina per visualizzare la finestra "Proprietà"
se non selezionata, selezionare la casella a discesa
nella casella "ListFillRange" scrivere Foglio2!$H$1:$H$54 (l'intervallo in cui abbiamo scritto l'elenco degli anni)
Nella casella LinkedCell scrivere J1 (la cella che deve accogliere il valore da noi scelto)

(http://mikevba.altervista.org/_altervista_ht/proprieta.gif)


La creazione del calendario.
Compiute queste operazioni preliminari possiamo iniziare la creazione del calendario:
nella cella "A1" la formula =DATA($J$1;$G$1;1)
nella cella "A2" la formula =DATA($J$1;$G$1;Foglio2!$D1)
nella cella "B2" la formula =GIORNO(A2)

vedremo una cosa del genere:
"A1": 01/01/2008
"A2": 01/01/2008
"B2": 1
però vorremmo:
"A1": gennaio
"A2": martedì
"B2": 1

Per ottenere questo occorre usare il formato celle.

(http://mikevba.altervista.org/_altervista_ht/formato_celle.gif)

Quindi:
Click destro sulla cella "A1"
selezionare Formato celle dal menù che ne viene fuori
scegliere la linguetta "Numero" se ancora non è selezionata
nell'elenco "Categorie" scegliere "Personalizzato
nella casella "Tipo" scrivere mmmm
premere OK

Ripetere le stesse operazioni sulla cella "A2"
ma, nella casella "Tipo", scrivere gggg

Ora siamo pronti al completamento del calendario.
Però desideriamo che il calendario mostri solo i giusti giorni del mese.
A seconda dei mesi i giorni possono essere 30 o 31 e Febbraio addirittura potrebbe avere 28 o 29 giorni.

Se riempissimo tutte le celle fino a coprire i 31 giorni, se il mese corrente è più breve di 31 giorni in fondo al nostro calendario vedremo che la sequenza dei giorni nella colonna "B" ricomincerà da 1 (cioè da 1 del mese successivo).
Questo fatto ci da la possibilità di usare, almeno nelle ultime righe, altre funzioni assieme alla formula =DATA($J$1;$G$1;Foglio2!$D1).

Selezionare le celle "A2" e "B2"
Trascinare le selezione fino alla riga 29
Così il calendario finisce col giorno 28
Nella "A30" scriviamo la formula
=SE(GIORNO(DATA($J$1;$G$1;Foglio2!$D29))<B20;"";DATA($J$1;$G$1;Foglio2!$D29))
Nella "B30" l'altra formula
=SE(A30="";"";GIORNO(A30))
Ora selezioniamo le celle "A30" e "B30"
Trasciniamo fino alla riga 32 in corrispondenza del 31° giorno


Con questo si conclude la creazione del calendario e possiamo iniziare a testarlo cambiando nelle caselle a discesa i mesi e/o gli anni.
Se tutto è stato eseguito correttamente ad ogni cambiamento del valore delle caselle a discesa vedremo cambiare il nostro calendario.

Buon divertimento ed auguri le le imminenti festività


 :coro: :coro: :xchristmas:
Titolo: Re: Vi piacerebbe creare un calendario
Inserito da: nuvolotta - Dicembre 24, 2008, 00:22:16
Grazie Mike!!! devo imparare ad usare excel e Calc... proverò a fare quel calendario... :-D

Titolo: Re: Vi piacerebbe creare un calendario
Inserito da: micdas - Dicembre 24, 2008, 01:05:08
Ciao Nuvy  :ciao:
ho provato le formule anche su Calc e funzionano anche lì.
C'è però una piccola differenza nella sintassi che include il nome del foglio.
In Excel si usa questa sintassi:
=DATA($J$1;$G$1;Foglio2!$D1)
=SE(GIORNO(DATA($J$1;$G$1;Foglio2!$D29))<B20;"";DATA($J$1;$G$1;Foglio2!$D29))
ossia il ! (punto esclamativo dopo il nome del foglio (Foglio2!$D1)

In Calc la sintassi usa il . (punto) al posto del punto esclamativo:
=DATA($J$1;$G$1;Foglio2.$D1)
=SE(GIORNO(DATA($J$1;$G$1;Foglio2.$D29))<B20;"";DATA($J$1;$G$1;Foglio2.$D29))

Per il resto è tutto simile

 :xchristmas:    :smilenatalizi: