Ci avviamo all’inizio del nuovo anno e con questo al cambio di calendari agende ecc.
Perché non utilizzare un programmino che ci permette di stampare in proprio un Settimanale.
Cosa deve fare il programma:
· Visualizzare in una pagina tutte le informazioni della Settimana.
· Segnalare Con una riga in rosso la settimana corrente
· Nella parte in alto devono essere visualizzate le seguenti informazioni:
o Anno;
o Mese;
o Data primo giorno della settimana;
o Data ultimo giorno della settimana;
o Date di tutti i giorni della settimana;
o Numero della settimana.
Per fare quello che vogliamo Excel ci offre le funzioni che ci servono?
Purtroppo no! Però con il VBA. Ci permette di creare quanto ci serve.
Quelle che mancano, sono due funzioni una che ci fornisce la settimana dell’anno di una certa data e un'altra che ci fornisce una data Passando come parametri giorno, mese è Anno, a dire il vero questa seconda funzione esiste, si tratta di “DATA(Anno;Mese;Giorno)” ma volevo qualcosa per poter inserire la data in italiano “PrimoGiornoMese(Giorno,Mese,Anno).
Ma questa è solo una preferenza chi vuole può utilizzare la funzione predefinita.
Le celle con le date sono formattate con 2 condizioni, tramite la Formattazione Condizione.
- il pulsante “Stampa” che ci permette di stampare le settimane che noi sceglieremo in seguito.
- Sotto la scritta “Anno” si trova l’altro pulsante che ci ha le stesse funzioni del precedente ma solo in visualizzazione, quindi ci farà vedere le varie settimane ma non li stamperà.
'################################################################################
Passiamo al codice:
All’apertura del file facciamo in modo che venga visualizzato a schermo intero.
Option Explicit
Public Sub Workbook_Open()
Application.WindowState = xlMaximized
End Sub
'################################################################################
‘I due pulsanti presenti nel foglio di lavoro, visualizzano la maschera che permette di scegliere le settimane da analizzare.
‘Scelte le settimane un pulsante ci permette di vedere le varie settimane, l’altro anche di stamparle.
‘I pulsanti comunque non verranno stampati.
Private Sub Anno_Click()
ImpostaSettimaneStampa.Show
Call Vedi_tutto
End Sub
Private Sub stampa_Click()
ImpostaSettimaneStampa.Show
Call Stampa_tutto
End Sub
'################################################################################
Option Explicit
Public CU_PrimaSettimanaStampa As Currency
Public CU_UltimaSettimanaStampa As Currency
'################################################################################
Sub Vedi_tutto()' Codice che permette di vedere le settimane selezionate
Dim CU_A As Currency
For CU_A = CU_PrimaSettimanaStampa To CU_UltimaSettimanaStampa
Worksheets("settimana").Cells(3, 12).Value = CU_A 'scrivo nella cella L3 la settimana che analizzo
MsgBox " Sto lavorando sulla settimana " & CU_A
Next
Worksheets("settimana").Cells(3, 12).Value = 1
End Sub
'################################################################################
Sub Stampa_tutto() ' Codice che permette di stampare le settimane selezionate
Dim CU_A As Currency
For CU_A = CU_PrimaSettimanaStampa To CU_UltimaSettimanaStampa
Worksheets("settimana").Cells(3, 12).Value = CU_A 'scrivo nella cella L3 la settimana che analizzo
MsgBox " Sto lavorando sulla settimana " & CU_A
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Next
Worksheets("settimana").Cells(3, 12).Value = 1
End Sub
'################################################################################
' Funzione che permette di calcolare la settimana dell’anno passando come parametri il primo giorno dell’anno presente nella cella B6 e la data da analizzate.
Function Settimana(DataInizio As Date, DataDaAnalizzare As Date) As Currency
Dim DA_A As Date
Settimana = 1
For DA_A = DataInizio + 1 To DataDaAnalizzare
If Weekday(DA_A) = 2 Then
Settimana = Settimana + 1
End If
Next DA_A
End Function
'################################################################################
Function PrimoGiornoMese(Giorno As Currency, Mese As Currency, Anno As Currency) As Date
PrimoGiornoMese = DateSerial(Anno, Mese, Giorno) ' Restituisce una data
End Function
'################################################################################
Scarica : http://www.ippocampo.org\public\SettimanaleShareOffice.zip
?>