Turno successivo
Info
Esempi
Linguaggio
Librerie
Formule
Ultimi Inseriti

 Login

 Password

Una funzione che consente di calcolare la data successiva di un turno settimanale, come ad esempio: il primo lunedì del mese, il secondo mertedì del mese, l'ultimo mercoledi, ecc.
L'esempio a lato di un calendario costruito a partire dall'inizio dell'anno può aiutare a capire il risultato che si ottiene, il link in basso consente di scaricare l'esempio.

La funzione si usa con questa sintassi:
=TurnoSuccessivo(DalGiorno, GiornoSett, Quando)


Parametri:
Parametro DalGiorno:
Il primo giorno disponibile per il turno

Opzioni per il parametro GiornoSett:
  1. Lunedì
  2. Martedì
  3. Mercoledì
  4. Giovedì
  5. Venerdì
  6. Sabato
  7. Domenica

Opzioni per il parametro Quando:
  1. Successivo
  2. 1° del mese
  3. 2° del mese
  4. 3° del mese
  5. 4° del mese
  6. Penultimo del mese
  7. Ultimo del mese

Il codice delle funzione:
Function TurnoSuccessivo(DalGiorno, GiornoSett, Quando) As Date
  GS = 1
  Select Case GiornoSett
    Case "Lunedì": GS = 1
    Case "Martedì": GS = 2
    Case "Mercoledì": GS = 3
    Case "Giovedì": GS = 4
    Case "Venerdì": GS = 5
    Case "Sabato": GS = 6
    Case "Domenica": GS = 7
  End Select
    
  DT = DalGiorno - 1
  IncrMese = 0
  While (DT < DalGiorno)
    Select Case Quando
      Case "Successivo":
        DT = DalGiorno
      Case "1° del mese":
        DT = DateSerial(Year(DalGiorno), Month(DalGiorno) + IncrMese, 1)
      Case "2° del mese":
        DT = DateSerial(Year(DalGiorno), Month(DalGiorno) + IncrMese, 1) + 7
      Case "3° del mese":
        DT = DateSerial(Year(DalGiorno), Month(DalGiorno) + IncrMese, 1) + 14
      Case "4° del mese":
        DT = DateSerial(Year(DalGiorno), Month(DalGiorno) + IncrMese, 1) + 21
      Case "Penultimo del mese":
        DT = DateSerial(Year(DalGiorno), Month(DalGiorno) + IncrMese + 1, 1) - 14
      Case "Ultimo del mese":
        DT = DateSerial(Year(DalGiorno), Month(DalGiorno) + IncrMese + 1, 1) - 7
    End Select
    IncrMese = IncrMese + 1
  Wend
  
  TurnoSuccessivo = DT + GS - Weekday(DT, vbMonday)
  If (Weekday(DT, vbMonday) > GS) Then TurnoSuccessivo = TurnoSuccessivo + 7
End Function


L'esempio completo é scaricabile da questo link: Es473.xlsm (a questo link le info per attivare le macro se risultano bloccate)

Gli esempi contenuti nel sito sono per uso personale, non é consentito l'uso professionale, commerciale o la riproduzione senza autorizzazione.
Per dubbi o domande potete scriverci a domande@macrofacili.it, sulla nostra pagina FB MacroFacili.it o sul gruppo FB Excel, macro e formule.
 

data4idea srls - PIva 01881000937 - info@data4idea.it