Limitazione dell’inserimento di date precedenti (Microsoft Excel)
Se utilizzi le funzionalità di convalida dei dati di Excel, puoi limitare ciò che entra in una cella, in base al contenuto di un’altra cella. Ad esempio, puoi facilmente limitare ciò che va nella cella A2 in base a una data che si trova nella cella A1. Segui questi passaggi:
-
Seleziona la cella A2.
-
Scegli Convalida dal menu Dati. Excel visualizza la finestra di dialogo Convalida dati.
-
Assicurati che la scheda Impostazioni sia visualizzata. (Vedi figura 1.)
-
Utilizzando l’elenco a discesa Consenti, scegli Data.
-
Utilizzando l’elenco a discesa Dati, scegliere Maggiore di o Uguale a.
-
Nella casella Data inizio immettere = A1. Ciò indica a Excel che la data deve essere maggiore o uguale a qualsiasi data si trovi nella cella A1.
-
Fare clic su OK.
Ora, ogni volta che si tenta di inserire una data nella cella A2 precedente alla data nella cella A1, Excel visualizza un messaggio di errore e non consentirà l’inserimento della data.
Cosa succede, tuttavia, quando si desidera limitare le date che possono essere inserite nella cella A1? Ad esempio, se inserisci la data 4/1/04 nella cella A1 e vuoi assicurarti che la data successiva immessa in A1 non sia anteriore a 4/1/04. Se inserisci una data come 4/15/04 nella cella A1, sarebbe OK, ma la prossima volta che inserisci una data nella cella A1 non la vuoi prima del 4/15/04. In altre parole, vuoi assicurarti che la cella A1 possa accettare solo date successive alla data attualmente in A1.
Questo è un po ‘più appiccicoso. Se segui i passaggi precedenti ma selezioni la cella A1 nel passaggio 1, la convalida dei dati non funzionerà. Perché? Poiché la data immessa nella cella A1 sarà sempre maggiore o uguale alla data immessa in A1, Excel non si confronta con la data precedente in A1 durante la convalida dei dati.
L’unico modo per risolvere questo problema è tramite l’uso di due macro. Per prima cosa, inserisci la seguente macro in un modulo normale:
Sub Date_Validation() Dim dteDate As Date Dim strDate As String With Range("A1") ' Memo original date dteDate = CDate(.Text) ' Create date string strDate = Format(dteDate, "m\/d\/yy") With .Validation ' Delete old settings .Delete ' Set new data validation .Add _ Type:=xlValidateDate, _ AlertStyle:=xlValidAlertStop, _ Operator:=xlGreaterEqual, _ Formula1:=strDate .IgnoreBlank = False .InCellDropdown = True .InputTitle = "" .ErrorTitle = "Invalid Date Entry" .InputMessage = "" .ErrorMessage = _ "Date is older than the previous date (" & _ dteDate & ")." .ShowInput = True .ShowError = True End With End With End Sub
Questa macro deve essere chiamata da un’altra macro, questa inserita nella finestra del codice del foglio di lavoro, in modo che venga attivata ogni volta che c’è una modifica nel foglio di lavoro:
Private Sub Worksheet_Change(ByVal Target As Range) On Error Resume Next If Target = Range("A1") Then Date_Validation End Sub
Il modo in cui funzionano queste macro è davvero molto interessante. Poiché si inserisce quest’ultimo nella finestra del codice del foglio di lavoro, si attiva ogni volta che viene apportata una modifica al foglio di lavoro. Se la cella da modificare è A1, viene eseguita la macro Date_Validation.
La macro Date_Validation acquisisce la data dalla cella A1 e crea una regola di convalida dei dati per la cella. È tutto ciò che fa: imposta una regola di convalida dei dati che non consente di inserire una data nella cella precedente alla data attualmente nella cella.
La bellezza della macro è che una volta che la regola di convalida dei dati è in vigore, la volta successiva che la cella A1 viene modificata, la regola di convalida dei dati viene attivata prima che venga attivato l’evento Worksheet_Change. Pertanto, la regola di convalida dei dati garantisce che sia possibile immettere solo una data maggiore della data corrente. Una volta cancellata la convalida dei dati, la macro si occupa di reimpostare la regola di convalida dei dati, in modo che venga confrontata con la data appena inserita.
_Nota: _
Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti ExcelTips), ho preparato una pagina speciale che include informazioni utili.
ExcelTips è la tua fonte di formazione economica su Microsoft Excel.
Questo suggerimento (2960) si applica a Microsoft Excel 97, 2000, 2002 e 2003. Puoi trovare una versione di questo suggerimento per l’interfaccia a nastro di Excel (Excel 2007 e versioni successive) qui: