Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1500to1504
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zellen bei abgelaufenem Datum sperren mit VBA

Zellen bei abgelaufenem Datum sperren mit VBA
23.06.2016 10:40:46
Andreas
Hallo zusammen,
ich habe heute ein kleines Problem.
Ich habe einen Kalender und möchte dass ab dem abgelaufenen Datum (gestern) keine Einträge mehr eingetragen oder gelöscht werden.
Eintragen kann ich über die Datenüberprüfung lösen, allerdings mag ich die Meldung nicht, die erscheint wenn eine ältere Zelle verändert werden soll. Ich mag einfach nur ein "OK" zum bestätigen.
Mein Datum steht in der Zeile 5 von F bis NZ.
Das Ändern der Zelle löse ich so "=HEUTE()<= F$5".
Geht das ganze auch per VBA?
Danke und Gruß
Andi

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zellen bei abgelaufenem Datum sperren mit VBA
23.06.2016 11:11:01
UweD
Hallo Andi
versuch mal das
- Rechtsclick auf den Tabellenblattreiter
- Code anzeigen
- Diesen Code dort reinkopieren

Private Sub Worksheet_Activate()
Dim RNG As Range, Z
Set RNG = Range("F5:NZ5")
Me.Unprotect
RNG.Locked = False
For Each Z In RNG.SpecialCells(xlCellTypeConstants, 3)
If IsDate(Z.Value) And Z.Value 
- das Makro läuft automatisch, wenn du auf das Blatt wechselst
- das Blatt muss dabei geschützt werden (automatisch)
Gruß UweD
Über Rückmeldungen würde ich mich freuen

AW: Zellen bei abgelaufenem Datum sperren mit VBA
23.06.2016 13:03:41
Andreas
Hallo Uwe,
ich habe den Code ausprobiert. Leider passiert nichts. Ich kann die Werte in den Zellen ändern (eingeben und löschen) unabhängig bei welchem Datum.
Wahrscheinlich ist es einfacher wenn man die Datei sieht.
Deshalb habe ich ein abgespecktes Beispiel angehängt.
https://www.herber.de/bbs/user/106457.xlsm
Gruß
Andi

Anzeige
AW: Zellen bei abgelaufenem Datum sperren mit VBA
23.06.2016 13:26:38
UweD
Hallo
ich hatte geschrieben: - das Makro läuft automatisch, wenn du auf das Blatt wechselst
- Das wird als Event erkannt und das Makro läuft ab
- Bei einem Blatt ist das was schwierig.
- Also müssen wir ein anderes Event benutzen. Es sollte aber nicht das Worksheet_Change sein, da dann sonst bei jeder Eingabe geprüft/gesperrt wird.
- Ich schlage das Workbook_open vor
- code in DieseArbeitsmappe

Private Sub Workbook_Open()
Dim RNG As Range, Z
MsgBox " Alte Daten werden schreibgeschützt"
Set RNG = Sheets(1).Range("F5:NZ5")
Sheets(1).Unprotect
RNG.Locked = False
For Each Z In RNG.SpecialCells(xlCellTypeFormulas, 1)
If IsDate(Z.Value) And Z.Value 

Gruß UweD
Über Rückmeldungen würde ich mich freuen

Anzeige
AW: Zellen bei abgelaufenem Datum sperren mit VBA
23.06.2016 15:11:40
Andreas
Hallo Uwe,
ich habe Deinen Code eingesetzt, aber leider passiert nichts, bis auf die Meldung beim Öffnen dass "die Alten Daten schreibgeschützt sind".
Ich kann weiter Daten eingeben und löschen, unabhängig vom Datum.
Mache ich etwas falsch?
Gruß
Andi

AW: Zellen bei abgelaufenem Datum sperren mit VBA
23.06.2016 15:13:33
UweD
Hast du mehrere Blätter in der Datei?

AW: Zellen bei abgelaufenem Datum sperren mit VBA
23.06.2016 15:21:58
Andreas
Nein! Die Datei ist so wie das Beispiel nur mit Namen anstatt der Zahlen.

AW: Zellen bei abgelaufenem Datum sperren mit VBA
23.06.2016 15:43:25
UweD
Hallo
ok, ich denke ich habs.
Ich hatte es so verstanden, dass nur die Zeile 5 gesperrt werden soll, du möchtest aber bis Zeile 115 sperren. Richtig?
Dann so.
Private Sub Workbook_Open()
    Dim RNG As Range, Z
    MsgBox "Alte Daten werden schreibgeschützt"
    With Sheets(1)
        Set RNG = .Range("E5:NZ5")
        .Unprotect
        For Each Z In RNG.SpecialCells(xlCellTypeFormulas, 1)
            If IsDate(Z.Value) And Z.Value < Date Then
                .Range(.Cells(3, Z.Column), .Cells(115, Z.Column)).Locked = True
            End If
        Next
        .Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
    End With
End Sub

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 15 - mit VBAHTML 12.6.0

Gruß UweD

Anzeige
AW: Zellen bei abgelaufenem Datum sperren mit VBA
23.06.2016 15:55:11
Andreas
Hallo Uwe,
der Code klappt wunderbar. Danke für die Hilfe.
Eine andere Frage dazu: kann man die Excel-Meldung, dass die Zelle Schreibgeschützt ist unterbinden?
Und vielleicht eine einfache Message-Box einbauen mit der Meldung Zelle ist Schreibgeschützt!.
Danke auf jeden Fall schonmal bisher. Das hat mich sehr viel weiter gebracht.
Viele Grüße
Andreas

AW: Zellen bei abgelaufenem Datum sperren mit VBA
23.06.2016 16:08:37
UweD
Hi
man könnte das Worksheet_SelectionChange Event des Blattes noch nutzen
in den Codebereich des Blattes:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Target.Locked = True Then MsgBox "Zelle ist Schreibgeschützt!"
End Sub

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 15 - mit VBAHTML 12.6.0


allerdings kommt immer noch die Excelmeldung, wenn man dann doch was ändern will
Gruß UweD

Anzeige
AW: Zellen bei abgelaufenem Datum sperren mit VBA
23.06.2016 17:59:16
Andreas
Hallo Uwe,
vielen, lieben Dank. Es funktioniert. Natürlich funktionierts.
Es kann so einfach sein, wenn man sich damit auskennt.
Letzte Frage: Das D im Namen (Nick) steht nicht zufällig für Dirk?
Viele Grüße Andreas

AW: Zellen bei abgelaufenem Datum sperren mit VBA
23.06.2016 20:25:06
Andreas
Hallo Uwe,
wie schon geschrieben funktioniert das ganze prima, allerdings würde ich auch das Jahr aus "A1" in die Berechnung mit einbeziehen. Das Jahr wird momentan außer acht gelassen.
Gruß
Andi

AW: Zellen bei abgelaufenem Datum sperren mit VBA
24.06.2016 08:19:47
UweD
Hallo
allerdings würde ich auch das Jahr aus "A1" in die Berechnung mit einbeziehen. Das Jahr wird momentan außer acht gelassen.
das kann nicht sein.
Da deine Formel in das Jahr mit berücksichtigtliegt hier ein "richtiges Datum" vor.
auch weiter nach rechts addierst du ja immer einen Tag- Also auch richtiges Datum.
Userbild
Diese Daten werden gegen den Vortag geprüft.
Es kann sein, (wird so sein) das ein bereits gesetzter Schutz nicht mehr aufgehoben wird.
Gruß UweD

Anzeige
AW: Zellen bei abgelaufenem Datum sperren mit VBA
27.06.2016 17:17:32
Andreas
Hallo Uwe,
sorry für die etwas verspätete Nachricht. Ich war anderweitig beschäftigt.
Natürlich weiß ich dass das Jahr eigentlich abgefragt wird, aber es ist so, dass wenn z.B. das Jahr 2017 steht, es nicht interessiert. Wahrscheinlich ist es so wie Du sagst, dass ein einmal gesetzter Schutz nicht mehr aufgehoben wird. Auch nach dem Speichern mit neuem Jahr und wieder öffnen ändert es sich nicht.
Ich habe den Code auch unter Worksheet Change laufen lassen (funktioniert auch einwandfrei, soweit ich testen konnte), aber leider keine Änderung.
Kann das geändert werden? Ist es sehr viel Aufwand?
Wenn ja muss ich mir etwas anderes einfallen lassen, Du hast ja wahrscheinlich auch so genug zu tun.
Danke für alles und viele Grüße
Andreas

Anzeige
AW: Zellen bei abgelaufenem Datum sperren mit VBA
28.06.2016 08:39:20
UweD
Hallo nochmal
dann hoffe ich mal, dass du die Nachricht noch bekommst, bevor der Beitrag im Archiv verschwindet.
durch die Änderung wird der gesamte relevante Bereich erst freigegeben und dann erst erfolgt die Zellsperre wie gehabt nach dem Datum aus Zeile 5
Private Sub Workbook_Open()
    Dim RNG1 As Range, RNG2 As Range, Z
    MsgBox "Alte Daten werden schreibgeschützt"
    With Sheets(1)
        Set RNG1 = .Range("E5:NZ5") 'Nur Datum 
        Set RNG2 = .Range("E3:NZ115") 'inkl. Eingabebereich 
        .Unprotect
        RNG2.Locked = False 'rücksetzen 
        For Each Z In RNG1.SpecialCells(xlCellTypeFormulas, 1)
            If IsDate(Z.Value) And Z.Value < Date Then
                .Range(.Cells(3, Z.Column), .Cells(115, Z.Column)).Locked = True
            End If
        Next
        .Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
    End With
End Sub

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 15 - mit VBAHTML 12.6.0


Gruß UweD

Anzeige
AW: Zellen bei abgelaufenem Datum sperren mit VBA
23.06.2016 21:52:54
Andreas
Hallo Uwe,
jetzt werde ich langsam zu Bittsteller. Ich mag es eigentlich nicht, aber ich bekomme es selber nicht hin.
Wie kann mann in Deinen Code zum Abschalten der Meldung
If Target.Locked = True Then MsgBox "Zelle ist Schreibgeschützt!"
ein Range einbauen. Ich möchte dass die Meldung nur beim anwählen der Zellen F6:NZ115 erscheint.
Jetzt erscheint sie bei jeder geschützten Zelle.
Viele Grüße
Andi

AW: Zellen bei abgelaufenem Datum sperren mit VBA
24.06.2016 08:10:29
UweD
Guten Morgen
geht so...
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Range("F6:NZ115"), Target) Is Nothing Then
        If Target.Locked = True Then MsgBox "Zelle ist Schreibgeschützt!"
    End If
End Sub

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 15 - mit VBAHTML 12.6.0


Gruß UweD (nicht Dirk)

Anzeige
AW: Zellen bei abgelaufenem Datum sperren mit VBA
27.06.2016 17:21:00
Andreas
Hallo Uwe,
mein Code war ähnlich, hat aber nicht funktioniert. Der funktioniert
Aber so unterscheiden sich die Profis von den Amateuren.
Danke und viele Grüße
Andreas

312 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige