Steven deve assicurarsi che nessuno inserisca informazioni in un foglio di lavoro tra le 16:00 e le 18:30 ogni giorno. Si chiede se sia possibile utilizzare la convalida dei dati per impedire a un utente di inserire informazioni in un foglio di lavoro in un determinato momento ogni giorno.

Ci sono due modi generali per farlo. Un approccio consiste nell’utilizzare la convalida dei dati per controllare l’ora e consentire o meno l’immissione dei dati.

  1. Seleziona tutte le celle nel foglio di lavoro.

  2. Visualizza la scheda Dati della barra multifunzione.

  3. Fare clic sullo strumento Convalida dati nel gruppo Strumenti dati. Excel visualizza la finestra di dialogo Convalida dati. (Vedi figura 1.)

  4. Utilizzando l’elenco a discesa Consenti, scegli Personalizzato.

  5. Immettere quanto segue nella casella Formula:

  6. Apportare le modifiche nella scheda Avviso di errore, come desiderato.

  7. Fare clic su OK.

Il problema con questo approccio è nel primo passaggio: è necessario selezionare tutte le celle nel foglio di lavoro per evitare che i dati vengano inseriti in una di esse. Inoltre, se stai già utilizzando la convalida dei dati in una delle celle, questo approccio sovrascriverà quelle impostazioni.

Per questi motivi, potrebbe essere meglio utilizzare un approccio basato su macro. Tutti questi approcci possono utilizzare gestori di eventi per verificare eventuali modifiche. Quanto segue si basa sull’evento Worksheet_Change, il che significa che viene attivato solo quando Excel rileva una modifica nel foglio di lavoro.

Private Sub Worksheet_Change(ByVal Target As Range)

Dim sMsg As String

sMsg = "No entries allowed between 4:00 pm and 6:30 pm!"

If Time >= "4:00:00 PM" And Time <= "6:30:00 PM" Then         MsgBox sMsg, vbCritical         With Application             .EnableEvents = False             .Undo   ' This undoes the change the person made             .EnableEvents = True         End With     End If End Sub

In sostanza, ogni volta che si verifica una modifica nel foglio di lavoro, il gestore verifica se è compreso tra le 16:00 e le 18:30. In tal caso, viene visualizzata una finestra di messaggio per indicare l’errore e quindi il metodo .Undo viene utilizzato per ripristinare qualsiasi modifica tentata.

Se preferisci, potresti adottare un approccio diverso e proteggere il foglio di lavoro se rientra nel tempo vietato:

Private Sub Worksheet_Activate()

If Time >= "4:00:00 PM" And Time <= "6:30:00 PM" Then         ActiveSheet.Protect         MsgBox "Worksheet is protected."

Else         ActiveSheet.Unprotect         MsgBox "You are free to edit now."

End If End Sub

Il gestore dell’evento Worksheet_Activate viene richiamato ogni volta che il foglio di lavoro viene attivato (selezionato). Se il foglio di lavoro viene attivato in qualsiasi momento al di fuori dell’orario vietato, non è protetto. Ovviamente, l’utente potrebbe comunque rimuovere manualmente la protezione del foglio di lavoro anche durante il periodo di divieto, quindi è una buona idea utilizzare questo approccio insieme a un approccio che viene attivato ogni volta che viene tentata una modifica, come discusso in precedenza.

ExcelTips è la tua fonte di formazione economica su Microsoft Excel.

Questo suggerimento (13503) si applica a Microsoft Excel 2007, 2010, 2013 e 2016.