Kann ich eine Zelle in einer Excel-Tabelle mithilfe eines Makros mit einem Kennwort schützen?

Kann ich eine Zelle in einer Excel-Tabelle mithilfe eines Makros mit einem Kennwort schützen?

Ich habe eine Excel-Tabelle als Zeiterfassung eingerichtet. Der Mitarbeiter öffnet seine Zeiterfassungsdatei für die Woche und trägt das Wochenenddatum an der dafür vorgesehenen Stelle ein. Von nun an wird zur Eingabe nur noch die Maus verwendet. Der Mitarbeiter wählt die richtige Zelle für den Wochentag und die Aktion „Einstempeln“, „Mittagessen“, „Mittagessen zurück“ und „Nach Hause gehen“ aus. Nachdem er den Cursor über der richtigen Zelle positioniert hat, klickt er auf eine Schaltfläche (eine Schaltfläche, die mit einem Makro verknüpft ist), die die richtige Zeit für die Aktion einträgt. Ich weiß nicht, wie ich ihn davon abhalten kann, einfach in die gewünschte Zelle zu gehen und die gewünschte Zeit einzugeben. Ich habe versucht, die Zelle als Teil des Schaltflächenmakros mit einem Kennwort zu schützen, aber das hat nicht funktioniert. Kennt jemand eine Möglichkeit, die Zellen zu schützen, sodass der Mitarbeiter die Zeiten nicht ändern kann? Oder gibt es eine einfachere Möglichkeit, dies alles gleichzeitig zu tun?

Antwort1

Ihre Benutzer haben Schreibzugriff auf die Excel-Datei …

Ich glaube nicht, dass Sie dies technisch in Excel durchsetzen können. Ich denke, Sie benötigen eine alternative Software. Ich bewundere jedoch Ihre Fähigkeiten mit Excel-Makros.

Um es genauer zu erläutern:

  • Wenn der Benutzer die Zelle ändern kann, ist sie nicht davor geschützt, dass der Benutzer die Zelle einfach selbst ändert (indem er einen Wert eingibt).
  • Wenn der Benutzer die Zelle nicht ändern kann, ist sie zwar davor geschützt, dass er einfach einen Wert eingibt, er kann jedoch auch nicht veranlassen, dass die richtigen Informationen über ein Makro in die Zelle geschrieben werden.

Dies unterscheidet sich vom Verschlüsseln von Zellen, das sogar das Lesen ohne Kennwort verhindert.

Ich denke, es gibt eine Menge Zeiterfassungssoftware und die meisten davon können erfasste Daten wahrscheinlich in Excel exportieren. Ich würde an Ihrer Stelle meinen Horizont über Tabellenkalkulationen hinaus erweitern.

Antwort2

Sie können Änderungen an Zellen durch einen VBA-Ereignishandler untersagen:

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.EnableEvents = False
    With Target
        If If Not Intersect(Target, Range("A1:B10")) Is Nothing Then Application.Undo
    End With
    Application.EnableEvents = True
End Sub

Ich weiß nicht, ob das Festlegen des Zellwerts über ein VBA-Makro dieses Ereignis auslöst. Ich weiß, dass es bei durch Formeln verursachten Änderungen nicht ausgelöst wird. Sie können jedoch problemlos eine globale Variable definieren, die das Festlegen von Änderungen vor dem Ändern der Zelle ermöglicht und diese danach wieder aufhebt.

Sie können auch versuchen, das Ereignis abzufangen Worksheet_SelectionChange, um zu verhindern, dass der Benutzer den Cursor in der Zelle positioniert. Sie können den Cursor für die nicht zulässigen Zellen auf eine vordefinierte Zelle (z. B. A1) neu positionieren oder einen komplizierteren Code schreiben, um sich die letzte zulässige Cursorposition zu merken und dorthin neu zu positionieren.

verwandte Informationen