04/02/2024 - Azucarea ha scritto:
Dopo un po' di tentativi ci sono riuscito, sono alle prime armi di VBA
???
04/02/2024 - Azucarea ha scritto:
If Year([Inizio]) = Year([Fine]) And Month([Inizio]) = Month([Fine]) Then Me.[KGY] = Year([Inizio]) Me.[KGM] = Month([Inizio]) For i = Day([Inizio]) To Day([Fine]) Me.Controls("" & i).Value = Me.[Assenza] Next i ElseIf Year([Inizio]) = Year([Fine]) And Month([Inizio]) <> Month([Fine]) Then Me.[KGY] = Year([Inizio]) Me.[KGM] = Month([Inizio])
Tradotto:
Se 01/01/24 (inizio)=01/02/24 (fine) allora Kgy=24 e kgm=1
Per i che va da 1 a 1 (quindi invece di contare per 30 conti solo 1 ciclo) scrivi “assenza”.
Bello, manco un mese e me ne decurtano solo 1.
Ma admo ad altro caso:
Inizio 20/01/24 fine 19/02/24
For 20 to 19…???!!!
Oppure dal 01/01/24 al 05/08/24
For 1 to 5…???!!!! 5 giorni? No 8 mesi!
Il restodel codice, date le poche info, non lo analizzo, anche perché il resto del codice rende inutile la prima parte: serve solo a stressare la cpu.
Funziona? Ok, al prossimo problema.
Io spiegherei con piccoli periodi cosa vuoi ottenere, magari bastano 2 righe di codice piuttosto che 10 cicli for.
Aiutino: for (datafine meno datainizio) downto 1….
Il resto se spieghi senza sigle da codicefiscale ti possiamo suggerire approcci diversi e funzionali.