Steven muss sicherstellen, dass niemand täglich zwischen 16:00 und 18:30 Uhr Informationen in ein Arbeitsblatt eingibt. Er fragt sich, ob es möglich ist, mithilfe der Datenüberprüfung zu verhindern, dass ein Benutzer täglich zu einer bestimmten Zeit Informationen in ein Arbeitsblatt eingibt.

Es gibt zwei allgemeine Möglichkeiten, wie Sie dies erreichen können. Ein Ansatz besteht darin, die Datenüberprüfung zu verwenden, um die Zeit zu überprüfen und die Dateneingabe entweder zuzulassen oder zu verbieten.

  1. Wählen Sie alle Zellen im Arbeitsblatt aus.

  2. Zeigen Sie die Registerkarte Daten des Menübands an.

  3. Klicken Sie in der Gruppe Datentools auf das Datenüberprüfungstool. Excel zeigt das Dialogfeld Datenüberprüfung an. (Siehe Abbildung 1.)

  4. Wählen Sie in der Dropdown-Liste Zulassen die Option Benutzerdefiniert.

  5. Geben Sie Folgendes in das Feld Formel ein:

  6. Nehmen Sie die gewünschten Änderungen auf der Registerkarte Fehlerwarnung vor.

  7. OK klicken.

Das Problem bei diesem Ansatz liegt im allerersten Schritt: Sie müssen alle Zellen im Arbeitsblatt auswählen, um zu verhindern, dass Daten in eine dieser Zellen eingegeben werden. Wenn Sie die Datenüberprüfung bereits in einer der Zellen verwenden, werden diese Einstellungen durch diesen Ansatz überschrieben.

Aus diesen Gründen ist es möglicherweise besser, einen makrobasierten Ansatz zu verwenden. Alle diese Ansätze können Ereignishandler verwenden, um nach Änderungen zu suchen. Das Folgende basiert auf dem Ereignis Worksheet_Change. Dies bedeutet, dass es nur ausgelöst wird, wenn Excel eine Änderung im Arbeitsblatt feststellt.

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

Im Wesentlichen prüft der Handler bei jeder Änderung des Arbeitsblatts, ob es zwischen 16:00 Uhr und 18:30 Uhr liegt. Wenn dies der Fall ist, wird ein Meldungsfeld angezeigt, in dem der Fehler angezeigt wird. Anschließend wird die .Undo-Methode verwendet, um alle versuchten Änderungen rückgängig zu machen.

Wenn Sie es vorziehen, können Sie einen anderen Ansatz wählen und das Arbeitsblatt schützen, wenn es sich innerhalb der gesperrten Zeit befindet:

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

Der Ereignishandler Worksheet_Activate wird jedes Mal aufgerufen, wenn das Arbeitsblatt aktiviert (ausgewählt) wird. Wenn das Arbeitsblatt jederzeit außerhalb der gesperrten Zeit aktiviert wird, ist es ungeschützt. Natürlich kann der Benutzer das Arbeitsblatt auch während der gesperrten Zeit manuell aufheben. Daher ist es eine gute Idee, diesen Ansatz in Verbindung mit einem Ansatz zu verwenden, der bei jedem Änderungsversuch ausgelöst wird, wie bereits erläutert.

ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.

Dieser Tipp (13503) gilt für Microsoft Excel 2007, 2010, 2013 und 2016.