Carissimi amici in access, grazie a voi ho imparato altre cose e sono riuscito ad implementare il conteggio a 6 mesi. Adesso funziona perfettamente.
Ecco il codice:
Public Sub CalcolaScadenze()
Dim Data1 As Date
Dim Data2 As Date
Dim Data3 As Date
Dim DataStop1 As Date 'inizio periodo vietato
Dim DataStop2 As Date 'fine periodo vietato
label1 = Null
label2 = Null
label3 = Null
Label4 = Null
Data1 = txtData1 'Phil - prende il valore da una casella di testo
txtscadenza1 = 60
txtscadenza2 = 6
'Phil - ora si adatta a tutti gli anni
DataStop1 = DateSerial(year(Data1), 8, 1) 'agosto, 1
DataStop2 = DateSerial(year(Data1), 9, 15) 'settembre, 15
' calcolo normale delle scadenze
Data2 = DateAdd("d", txtscadenza1, Data1)
Data3 = DateAdd("m", txtscadenza2, Data1)
label1 = Data2
label2 = Data3
' calcolo le scadenze in funzione del periodo vietato
If (Data2 >= DataStop1 And Data2 <= DataStop2) Or _
(Data1 < DataStop1 And Data2 > DataStop2) Then
Data2 = DateAdd("d", DateAdd("d", 1, DateDiff("d", DataStop1, DataStop2)), Data2)
ElseIf Data1 >= DataStop1 And Data1 <= DataStop2 Then
Data2 = DateAdd("d", txtscadenza1, DataStop2)
End If
label3 = Data2
If (Data3 >= DataStop1 And Data3 <= DataStop2) Or _
(Data1 < DataStop1 And Data3 > DataStop2) Then 'Nota1
Data3 = DateAdd("d", DateAdd("d", 1, DateDiff("d", DataStop1, DataStop2)), Data3)
ElseIf Data1 >= DataStop1 And Data1 <= DataStop2 Then 'Nota2
Data3 = DateAdd("m", txtscadenza2, DataStop2)
End If
label2 = Data3
End Sub