Excel: Modificare l’anno predefinito per l’inserimento veloce delle date

vbasnippets

In un campo data, se inserite 12/1 e premete invio, vi accorgerete che Excel sistemerà il valore completando per voi l’inserimento stesso e mostrando, ad esempio 12/01/2018 (2018 è l’anno in cui ho creato il post).

Il valore dell’anno viene ricavato, com’è prevedibile, dall’orologio del PC. Ci sono casi in cui è necessario inserire un cospicuo numero di dati, ad esempio, dell’anno precedente o addirittura di anni passati.

Se per esempio volessimo inserire dati dell’anno 2017, non c’è modo (a meno di retrodatare l’orologio) di far capire ad Excel ciò che desideriamo.

Tramite VBA è possibile fare in modo da ottenere ciò che vogliamo e retrodatare a piacimento l’anno di riferimento dei dati da imputare.

Prendiamo ad esempio il seguente foglio:

imgexcel

nella colonna A, a partire dalla riga 8, possiamo inserire le nostre registrazioni. Nell’esempio che vi fornirò ho inserito nella cella D1 il valore dell’anno  a cui saranno riferite le date che inseriremo nella colonna A.

Per l’automazione, aprite la barra dei Menu e, dal gruppo “sviluppo“, cliccate sull’icona “visual basic“:

vba

 

Il codice va inserito nel foglio corrente (probabilmente il file sarà composto da più fogli…):

 

imgexcelvba 1024x637

Ecco a voi il codice VBA, copiatelo e incollatelo nella finestra codice che si aprirà doppiocliccando (:D) sul foglio di vostro interesse (nell’esempio il foglio “Mastro”). Ho stimato un numero d’inserimenti di circa 10.000, dovrebbero bastare!

Private Sub Worksheet_Change(ByVal Target As Range)
If ActiveSheet.Range("D1:D1").Value = "" Then MsgBox "La cella D1 deve necessariamente contenere un anno", vbCritical: GoTo 100
' controlla che il cambiamento avvenga solo nella colonna A
If Intersect(Target, Range("A8:A10000")) Is Nothing Then GoTo 100
'controlla che l'anno di riferimento sia inferiore a quello attuale
'e se lo è, diminuisce di 1 l'anno
If Year(Now) = D1 Then GoTo 100
'calcola la differenza anni
DiffAnni = Year(Now) - ActiveSheet.Range("D1:D1").Value

    If Target.Cells.Count > 1 Then Exit Sub
    If Target = "" Then Exit Sub
    If Target.Column <> 1 Then Exit Sub

    
        Application.EnableEvents = False
            Target = DateAdd("yyyy", -DiffAnni, Target)
        Application.EnableEvents = True
100
End Sub

No thoughts on “Excel: Modificare l’anno predefinito per l’inserimento veloce delle date”