Visual Basic Simple
Calcolo del numero dei giorni lavorativi tra due date
Sincronizza Indice
Sincronizza Indice
Scarica il progetto
Scarica il progetto
Scarica il testo dell'articolo
Testo dell'articolo
Stampa l'articolo
Stampa l'articolo
Ricerca personalizzata

Difficoltà: 2 / 5

In questo HowTo vedremo come sviluppare una semplice funzione che restituisce il numero dei giorni lavorativi tra due date. La funzione non farà il calcolo di eventuali feste infrasettimanali, ma conterà soltanto il numero di giorni della settimana che non sono né sabato né domenica.

La funzione che andremo a scrivere si chiamerà GiorniLavorativi e richiederà che siano passati come parametri due date: DataInizio e DataFine.

  1. Function GiorniLavorativi(DataInizio As Date, DataFine As Date) As Integer
  2.     Dim GiornoSettimana As Integer
  3.     GiorniLavorativi = 0
  4.     While DataInizio <= DataFine
  5.         GiornoSettimana = Format(DataInizio, "w")
  6.         If (GiornoSettimana <> vbSaturday) And (GiornoSettimana <> vbSunday) Then GiorniLavorativi = GiorniLavorativi + 1
  7.         DataInizio = DateAdd("d", 1, DataInizio)
  8.     Wend
  9. End Function

Utilizzeremo la variabile GiornoSettimana per ritrovare il giorno all'interno della settimana (lunedì, martedì, etc...).

Alla riga 4 inizia un ciclo che durerà fintanto che DataInizio sarà minore o uguale di DataFine. All'interno del ciclo viene ritrovato il giorno settimanale tramite la funzione Format e successivamente verrà controllato se esso non è né sabato né domenica. In tal caso il valore di GiorniLavorativi verrà incrementato di 1 (riga 6).
Effettuata questa operazione verrà aumentato il valore di DataInizio di un giorno. Subito dopo l'incremento verrà paragonato nuovamente il valore di DataInizio con DataFine.

Alla fine del ciclo la variabile GiorniLavorativi conterrà il numero di giorni lavorativi che verrà restituito all'uscita della funzione.

Figura 1Vediamo ora l'interfaccia grafica. Inseriamo nel nostro form due Framesdi nome DataInizialeFrame e DataFinaleFrame.
All'interno del primo inseriremo una matrice di OptionButtondi nome DataIniziale; avremo per cui quattro elementi con Index dallo 0 al 3.
All'interno del secondo frame inseriremo un'altra matrice di OptionButtondi nome DataFinale; anch'essa avrà proprietà Index da 0 a 3.
Ogni OptionButton avrà una data impostata nella sua Caption.

All'interno del form inseriamo anche un pulsante di comandodi nome Calcola ed una TextBox di nome Risultato.

Com'è facilmente intuibile, al momento del click sopra il pulsante Calcola verrà calcolato il numero di giorni lavorativi tra le due date selezionate. Il risultato verrà scritto nella casella di testo in basso a destra.

  1. Private Sub Calcola_Click()
  2.     Dim CONTA As Integer
  3.     Dim PrimaData As Date
  4.     Dim SecondaData As Date

Abbiamo dichiarato tre variabili: CONTA servirà per analizzare i quattro elementi delle due matrici, alla ricerca del pulsante tra i quattro selezionato.
PrimaData e SecondaData serviranno per convertire in formato di data le Caption dei pulsanti di opzione.

  1.     For CONTA = 0 To 3

Qui comincia un ciclo che analizza i singoli elementi delle matrici di OptionButtons.

  1.         If DataIniziale(CONTA).Value = True Then PrimaData = DataIniziale(CONTA).Caption

Questo ciclo si ripeterà quattro volte: ogni volta viene controllato se l'elemento in analisi ha la proprietà Value impostata a True. Se non è così, non accade nulla. Se la proprietà Value è True viene memorizzata in formato di data quella indicata nella proprietà Caption del pulsante di opzione. Questa conversione è necessaria perché la funzione GiorniLavorativi richiede due variabili di tipo Date.

  1.         If DataFinale(CONTA).Value = True Then SecondaData = DataFinale(CONTA).Caption

Lo stesso tipo di controllo viene effettuato sulla data finale.

  1.     Next CONTA
  2.     Risultato.Text = GiorniLavorativi(PrimaData, SecondaData)
  3. End Sub

La riga 9 effettua la chiamata alla funzione GiorniLavorativi e scrive il numero riportato da essa nella casella di testo Risultato.

Possiamo provare il progetto.

Figura 2
Figura 2

Basta selezionare due pulsanti di opzione, premere il tasto Calcola per vedere apparire il numero di giorni lavorativi tra le due date scelte.

Fibia FBI
1 Dicembre 2000

Scarica il progetto
Scarica il progetto
Scarica il testo dell'articolo
Scarica il testo dell'articolo
Stampa l'articolo
Stampa l'articolo
Torna all'indice degli HowTo