Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Zellen sperren, wenn Datum unter-/überschritten

Zellen sperren, wenn Datum unter-/überschritten
10.12.2018 09:54:47
Buddy
Hallo liebe VBA-Profis,
ich brauche ein wenig Unterstützung bei meinem folgenden Problem.
Ich habe eine Anwesenheitstabelle gebaut, in der in der Spalte A die Namen der Teilnehmer stehen, in Spalte B und C sind das Anfangs- und Enddatum der grundsätzlichen Verfügbarkeit es jeweiligen Teilnehmers und ab Spalte D dann ein Kalender, in dem sich die Teilnehmer mit Urlaub, etc. austragen können.
In den Zellen E1:NF1 habe ich alle Datümer eines Jahres (also 01.01. - 31.12.) hinterlegt.
Die Austragungsgründe habe ich per Datenüberprüfung definiert.
Mein Problem: Ich möchte, dass in den Zellen vor dem "Anfangsdatum" und nach dem "Enddatum" des jeweiligen Teilnehmers die Zellen so gesperrt werden, dass keine Eintragungen mehr möglich sind, bestenfalls die Zellen auch ausgegraut und der ggf. schon vorhandene Inhalt (wenn das Anfangs- oder Enddatum geändert wird) gelöscht wird.
Ist das per VBA machbar?
Ich bin da leider nicht so fit.
Für eure Hilfe jetzt schon mal vielen Dank.
Gruß
Buddy
Anzeige

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellen sperren, wenn Datum unter-/überschritten
10.12.2018 10:03:35
MaTrois
Hallo Buddy,
wenn ich Dich richtig verstanden habe ist dazu gar kein VBA erforderlich. Du musst die Zellen E1:NF1 markieren um dann die Eigenschaft "gesperrt" entfernen. Nach einer ggf. zusätzlichen Farbcodierung (z.B. alle übrigen Zellen hellgrau einfärben) wird der Blattschutz aktiviert.
Viele Grüße,
MaTrois.
Anzeige
Zellen sperren, wenn Datum unter-/überschritten
10.12.2018 12:33:23
Buddy
Hallo MaTrois,
vielen Dank für die Info. Manuell hätte ich das schon hinbekommen. Mir geht es vor allem darum, dass ich bei eine ewig langen Teilnehmerliste nicht ständig manuell die Zellen-Sprrungen setzen muss, sondern dass Excel die Zellen automatisch sperrt, sobald
1. Anfangs- und Enddatum gesetzt werden oder
2. eins von beiden geändert wird
das ganze natürlich immer für den jeweiligen Teilnehmer, also Zeile für Zeile.
Geht das?
Viele Grüße
Buddy
Anzeige
AW: Eine Beispielmappe wäre hier hilfreich! owt
10.12.2018 13:48:07
Herbert
,,
AW: Eine Beispielmappe wäre hier hilfreich! owt
11.12.2018 07:50:07
Buddy
Hallo Herbert,
muss mich erstmal entschuldigen: ich habe es gestern leider nicht mehr geschafft.
Wie gewünscht habe ich eine Beispieldatei hochgeladen. Sieht etwas anders aus, da ich noch ein wenig dran gebastelt habe. Die Spalten sollen später per Userform nach Kalenderwochen und/oder Monaten filterbar gemacht werden. Userform und Makros dazu habe ich schon und funktioniert auch prächtig.
Mein Problem ist:
Wenn ich in Spalte C oder D das Datum ändere, (z.B. Teammitglied 13 - Zeile 24), dann sollen ab Spalte E alle Spalten ausgegraut und schreibgeschützt sein, deren Datum in Zeile 10 nicht in den angegebenen Zeitraum in Spalte C und D gehört. Sollte in diesen Spalten schon etwas eingetragen sein, soll der Inhalt vor dem Sperren gelöscht werden. Aber eben nur für das betroffene Teammitglied.
Dabei ist zu berücksichtigen, dass das ganze Blatt mit Blattschutz gesperrt ist, mit Ausnahme der Eingabefelder innerhalb der Matrix, also der Zellen E11 - NF41
Ich hoffe, das war einigermaßen nachvollziehbar?
https://www.herber.de/bbs/user/126007.xlsx
Viele Grüße
Buddy
Anzeige
AW: Eine Beispielmappe wäre hier hilfreich! owt
11.12.2018 16:13:03
Herbert
Hallo,
schau dir mal meinen Vorschlag an. Wenn du jetzt im Bereich C11:D41 (Bereichsname: Rng_Datum) etwas änderst, werden die entsprechenden Zellen vor dem Datum in Spalte C und die Zellen ab dem Datum in Spalte D in der Zeile, in der sich der Cursor bei der Änderung befand, grau unterlegt, die grauen Zellen gesperrt und die Zellinhalte gelöscht.
Frage: Wie willst du eigentlich in den Datumsspalten etwas ändern, wenn das AB gesperrt ist und nur die Eingabezellen ab Spalte E entsperrt sind?
Versuche mal, ob du da eine Lösung selber basteln kannst. Wenn nicht, dann melde dich noch mal.
https://www.herber.de/bbs/user/126025.xlsm
Servus
Anzeige
AW: Eine Beispielmappe wäre hier hilfreich! owt
12.12.2018 06:47:00
Buddy
Hallo Herbert,
schon mal vielen Dank für Deine Mühe. Ich kann im Moment leider nicht auf die Datei zugreifen, weil der Zugriff gesperrt ist (ich vermute wegen der Anreicherung mit VBA :o))
Ich werde heute Nachmittag noch mal schauen und melde mich dann noch mal.
Viele Grüße
Buddy
Anzeige
AW: Eine Beispielmappe wäre hier hilfreich! owt
12.12.2018 16:51:59
Buddy
Hallo,
ich hab mir dein Ergebnis jetzt mal angeschaut. Geht schon sehr in die richtige Richtung, funktioniert aber noch nicht ganz
Grundsätzlich wird - wie ich das auch gerne hätte, die korrekte Zeile bis bzw. ab dem Datum in Spalten C und D ausgegraut. Leider funktioniert das mit dem Sperren nicht.
Wenn in Spalte C als Datum 01.01.2018 eingegeben wird, wird auch das Datum in Spalte D gelöscht, die Zelle ausgegraut. Auch wenn man jetzt nachträglich die Spalte D wieder bestückt, wird auch dieses Datum wieder rausgelöscht.
Wenn sich eins der beiden Datümer ändert, bleiben die ausgegrauten Felder aber erhalten, also Änderungen werden nicht akzeptiert.
Irgendeine Idee, woran das liegt?
ZU deiner Frage: Wir werden ca. 70 Teams haben, deren Anwesenheit dann in 6-8 Großteams aggregiert werden. bei jedem Großteam werden 2-3 Admins sich um die Pflege dieser Dateien kümmern und auch die Passwörter für die Eingabe in Spalten A-D erhalten. Die Anwesenheit stellt aber jeder selbst ein - und da benötige ich größtmögliche Sicherheit, dass kein Blödsinn eingegeben wird und damit die Übersicht verfälscht wird.
Eine Lösung meines Problems würde mich echt einen riesigen Schritt weiterbringen.
Also schon mal vielen Dank für die Teillösung und den Zeiteinsatz, der hier erbracht wird.
Viele Grüße
Buddy
PS.: Bin jetzt erstmal bis Montag schlecht erreichbar. Ich werde mal schauen, ob ich es in der Zeit schaffe, hier reinzusehen. Aber Bitte nicht steinigen, wenn ich in der Zeit keine Rückmeldung gebe :o)
Anzeige
AW: Eine Beispielmappe wäre hier hilfreich! owt
13.12.2018 10:36:05
Herbert
Hallo,
ich habe jetzt alle deine Angaben gecheckt und noch einiges neu programmiert. Probiers mal. In der AM sind noch ein paar Erläuterungen.
https://www.herber.de/bbs/user/126066.xlsm
Servus
AW: Eine Beispielmappe wäre hier hilfreich! owt
13.12.2018 17:03:38
Buddy
Hallo Excel-Profi,
ist fast schon super. Nur noch ein Problem:
Wenn ich ein Datum neu eingebe, werden alle gegrauten Felder wieder entgraut und freigegeben. Und nur in der einen Zeile, in der ich gerade eine Änderung vorgenommen habe, wird eine Prüfumg der zu sperrenden Felder vorgenommen. Kann man das noch erweitern auf alle Zeilen 11-41?
Dann wäre das Ding einfach nur genial und genau das, was ich gesucht habe! :o)
Viele Grüße
Buddy
Anzeige
AW: Eine Beispielmappe wäre hier hilfreich! owt
13.12.2018 17:16:23
Herbert
Ich verstehe nicht, was du mit "wird eine Prüfung der zu sperrenden Felder vorgenommen" meinst?
Habe ich das richtig verstanden, dass du den gesamten Eingabebereich (E11:NF41) sperren und nur den Bereich der aktiven Zeile von Anfangsdatum bis Enddatum freigeben willst?
Servus
AW: Eine Beispielmappe wäre hier hilfreich! owt
14.12.2018 14:21:37
Buddy
was ich meinte ist, dass bei Änderung des Datums bei Teammitglied 14 nur die Zellen für Teammitglied 14 grau hinterlegt und gesperrt werden, obwohl einige andere Teammitglieder auch erst ab Mitte des Jahres oder nur bis Mitte des Jahres da sind.
Es sollte eigentlich so sein, dass z. B. beim Teammitglied 12 (anwesend bis 30.09.2018) die Zellen ab 01.10.2018 immer gesperrt werden, bis das Datum 30.09.2018 bei Teammitglied 12 geändert wird, und zwar unabhängig davon, ob bei Teammitglied 13 oder 14 etwas geändert wird.
mit der aktuellen Version ist es so, dass bei Änderung eines Datums bei Teammitglied 12 die Eingabefelder von allen anderen Mitgliedern vom 01.01. - 31.12.2018 freigegeben sind und nur für das Teammitglied 12 die Zellen gesperrt werden, die außerhalb des freigegebenen Zeitraums liegen.
Gewünscht ist, dass alle Eingabefelder E11-NF41, die außerhalb des in den Spalten C und D für die jeweilige Zeile angegebenen Zeitraum liegen, gesperrt werden, also nicht nur der aktiven Zeile, sondern die Datumseingaben aller Zeilen müssen immer berücksichtigt sein, sich aber auch entsprechend in der Zeile anpassen, in der ich ein Datum ändere.
Man, ist das schwer, das zu beschreiben :o). Ich hoffe, das ist jetzt einigermaßen verständlich?
Anzeige
AW: Eine Beispielmappe wäre hier hilfreich! owt
14.12.2018 16:19:03
Herbert
OK, probiers noch mal damit:
https://www.herber.de/bbs/user/126113.xlsm
Servus
P.S.: Falls der Thread hinten raus fällt, fange wieder einen neuen an!
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Zellen sperren basierend auf Datumseingaben in Excel


Schritt-für-Schritt-Anleitung

  1. Daten eingeben: Erstelle eine Anwesenheitstabelle mit den Spalten A (Namen), B (Anfangsdatum) und C (Enddatum). Füge in den Zellen E1:NF1 die Datümer des Jahres ein.

  2. Zellen entsperren: Markiere die Zellen E1:NF1, gehe zu "Format" und entferne die Sperre für diese Zellen. Dies ist wichtig, damit die Zellen später durch VBA gesperrt werden können.

  3. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  4. Modul hinzufügen: Klicke auf "Einfügen" > "Modul", um ein neues Modul zu erstellen.

  5. Code einfügen: Füge den folgenden VBA-Code ein, der die Zellen basierend auf den Datumsangaben sperrt und ausgraut:

    Private Sub Worksheet_Change(ByVal Target As Range)
        Dim rngDatum As Range
        Dim cell As Range
        Dim startDatum As Date
        Dim endDatum As Date
    
        Set rngDatum = Me.Range("C11:D41") ' Bereich für die Datumsangaben
    
        If Not Intersect(Target, rngDatum) Is Nothing Then
            Application.EnableEvents = False
            For Each cell In Me.Range("E11:NF41")
                cell.Locked = False ' Alle Zellen entsperren
            Next cell
    
            For Each cell In rngDatum
                If IsDate(cell.Value) Then
                    startDatum = cell.Value
                    endDatum = cell.Offset(0, 1).Value
                    For Each c In Me.Range("E1:NF1")
                        If c.Value < startDatum Or c.Value > endDatum Then
                            c.Offset(cell.Row - 11, 0).Locked = True ' Zellen sperren
                            c.Offset(cell.Row - 11, 0).Interior.Color = RGB(200, 200, 200) ' Zellen ausgrauen
                        End If
                    Next c
                End If
            Next cell
            Me.Protect "dein_passwort" ' Blattschutz aktivieren
            Application.EnableEvents = True
        End If
    End Sub
  6. Blatt schützen: Aktiviere den Blattschutz, um die Zellen zu schützen, während die Eingabefelder in der Matrix (E11:NF41) weiterhin bearbeitbar bleiben.


Häufige Fehler und Lösungen

  • Fehler: Zellen werden nicht gesperrt, wenn ein Datum eingegeben wird.

    • Lösung: Stelle sicher, dass der VBA-Code im richtigen Arbeitsblattmodul platziert ist.
  • Fehler: Eingaben in gesperrte Zellen sind weiterhin möglich.

    • Lösung: Überprüfe, ob der Blattschutz korrekt aktiviert wurde.

Alternative Methoden

Eine alternative Methode, um zu verhindern, dass Daten in bestimmten Zellen eingegeben werden, ist die Verwendung von bedingter Formatierung. Du kannst die Zellen rot einfärben, wenn das Datum überschritten wird. Diese Methode erfordert jedoch keine Sperrung der Zellen.

  1. Bedingte Formatierung hinzufügen:
    • Markiere den Bereich E1:NF41.
    • Gehe zu "Start" > "Bedingte Formatierung" > "Neue Regel".
    • Wähle "Formel zur Ermittlung der zu formatierenden Zellen verwenden" und gib die folgende Formel ein:
      =E$1<=$C11
    • Setze die Formatierung auf rot, um visuelles Feedback zu geben.

Praktische Beispiele

Hier ist ein Beispiel für eine einfache Anwesenheitstabelle:

Name Anfangsdatum Enddatum 01.01. 02.01. ... 31.12.
Teammitglied 1 01.01.2018 30.06.2018 x ...
Teammitglied 2 15.05.2018 31.12.2018 x ... x

In diesem Beispiel wird die Zelle für den 01.01.2018 gesperrt, wenn das Anfangsdatum für Teammitglied 1 auf den 01.01.2018 gesetzt wird.


Tipps für Profis

  • Datenvalidierung: Nutze die Datenvalidierung, um Fehler bei der Eingabe von Datumswerten zu minimieren.
  • Automatisierung: Automatisiere die Eingaben durch Verwendung von Formularen oder Dropdown-Listen, um die Benutzerfreundlichkeit zu erhöhen.
  • Sicherung: Erstelle regelmäßige Backups deiner Excel-Datei, um Datenverlust zu vermeiden.

FAQ: Häufige Fragen

1. Frage
Wie kann ich verhindern, dass in Excel Zellen überschrieben werden?
Antwort: Verwende den Blattschutz in Kombination mit VBA, um sicherzustellen, dass nur bestimmte Zellen bearbeitbar sind.

2. Frage
Kann ich die Zellen automatisch rot einfärben, wenn das Datum überschritten ist?
Antwort: Ja, du kannst die bedingte Formatierung nutzen, um die Zellen rot zu markieren, wenn ein Datum überschritten wird.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige