Grazie Anthony e scusa se rispondo solo adesso.... lavoro :-) per questo mi serve calcolare lo straordinario :-)
Ho modificato il tuo codice vba in questo modo e sembra funzionare ma non ho avuto il tempo di fare tutte le prove necessarie:
(sono sicuro che comunque l'errore non è nel vba ma lo commetto io nelle impostazioni del file)
...
'MODIF:
If InOuTable.Offset(0, 3).Value = 0 Then Out2 = Out1 Else Out2 = InOuTable.Offset(0, 3).Value + (InOuTable.Offset(0, 3).Value < In2) * -1
DefCols = DefOrario.End(xlToRight).Column - DefOrario.Column
....
Il file lo torvi qui:
http://www.filedropper.com/turniconpranzoovviamente ancora incompleto per quel che riguarda la spunta del pranzo ed altre cosette.
Specifico inoltre che le ore notturne sono considerate quelle dalle 22:00 alle ore 06:00 e che le prime sei ore di ogni giorno sono sempre lavorative. Anche se si inizia a lavorare alle 22:00 e si finisce alle 06:00 saranno da considerare due turni: uno per il primo giorno che va dalle ore 22:00 alla mezzanotte (due ore notturne a meno che non siano state lavorate altre ore in precedenza) ed uno per il secondo giorno che va dalle 00:00 alle ore 06:00 (sempre notturne e non possono mai essere straordinario come lo saranno quelle successive alle sei ore) questo significa che non sarà mai inserito come ultima uscita un'orario oltre le 24:00.
Spero che sia stato almeno un po' chiaro.
Grazie per l'interessamento