Calendario perpetuo

Lavoro realizzato in collaborazione con Marco Nocciolini  (marco.nocciolini@tin.it)

Questa applicazione è stata realizzata sfruttando la funzione =DATA() (inserita nel Range F5:F35)

Sono state nascoste due colonne, la E e la H che riportano, la prima il riferimento alle due celle richiamate nella funzione DATA e, dal Range  E5 al E35,  le celle con inserito il numero progressivo dei giorni in un mese, la seconda, sempre nel Range H5:H35, la funzione =GIORNO.SETTIMANA() che converte il dato (contenuto nella stessa riga ma nella colonna F) in un numero da 1 a sette e che sono i corrispondenti di domenica, lunedi, martedi ecc. fino a sabato. Questo è il numero che viene letto dalla routine che provvede a evidenziare in rosso le celle che corrisponderanno a "domenica" (routine che trovate in calce).

La colonna G  (G5:G35) riporta una semplice uguaglianza alla stessa riga ma alla colonna F, solo che, avendo in F una data espressa in formato data, in G vogliamo che di questa data venga riportato il relativo giorno della settimana, ed è sufficiente formattare le celle G5:G35 scegliendo: "Numero/Personalizzato e scrivere "gggg" nella finestrina di immissione formato.

Per quanto riguarda le due combobox, la prima, che "pesca" gli Anni dalla colonna S ("S5:S105") è stata presa dalla "Casella degli Strumenti" ed ha nell'evento Change,  la routine che provvede prima a riportare le celle della colonna G (i giorni della settimana) ai colori iniziali, indi, trovato il giorno "domenica", colora di rosso la cella e di bianco il font, in modo che ad ogni "cambio" di anno vengano aggiornati i colori sui rispettivi giorni "domenica". La seconda, che deve fornire uno dei valori numerici che servono alla funzione =DATA(), è stata presa dalla finestra dei "moduli" che "pesca" i Mesi dalla colonna P (P5:P16), che mostra nel menù i nomi dei mesi, MA che restituisce non il mese selezionato ma il suo indice di riga e quindi un valore numerico. A questa seconda combobox (che non è un "oggetto" e non possiede eventi) è stata associata una macro con le stesse istruzioni dell'altra combobox. In questo modo, cambiando l'anno o il mese, avremo sempre lo stesso effetto di evidenziazione della "domenica". Sotto, la foto dell'applicazione e dopo la routine ed il file scaricabile.

  • Sub Macro1()
    With Range("G5:G35")
    .Interior.ColorIndex = Null
    .Font.ColorIndex = 1
    End With
    Dim CL As Object

    For Each CL In Range("h5:h35")

    If CL.Value = "1" Then

    CL.Offset(0, -1).Font.ColorIndex = 2
    CL.Offset(0, -1).Interior.ColorIndex = 3
    End If
    Next
    End Sub

File consultabile e scaricabile:  Calendario.zip  20Kb