Das Clever-Excel-Forum.de - Treffen
... 14.-16. September 2018 im Allgäu ...

Bei Änderung Datum nachführen
#1
Hallo

Bei einer Datei, die bis auf wenige Zellen schreibgeschützt ist, habe ich die Möglichkeit, Währungen nach Bedarf abzufragen. Wenn dies der Fall ist, würde ich gerne in der geschützten Zelle (H14), dass dort das Datum aktualisiert wird.

Die anderen Zellen sind D10; D12 und D14. In diesen Zellen werden die aktuellen Kurse von Hand eingetragen.

Gibt es eine Formel, dass wenn ein neuer Eintrag in D10; D12 oder D14 erfolgt ist, in H14 das aktuelle Datum eingetragen wird?

Vielen Dank im Voraus

cuba
to top
#2
Hi cuba,

in einer geschützen Zelle können keine Einträge vorgenommen werden.

Ich würde an deiner Stelle mit einem kleinen Makro den Schreibschutz aufheben, den Zeitstempel setzen und dann den Zellenschutz wieder einschalten.

Kopiere diesen Code hinter das betreffende Arbeitsblatt. (muss im Code noch angepasst werden)

Code:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    Sheets("Tabelle2").Unprotect
        If Not Intersect(Target, Range("D10,D12,D14")) Is Nothing Then
                Range("H14").Value = Date
    Sheets("Tabelle2").Protect
    End If
End Sub
Gruß Günter
Misserfolg ist eine Chance, es beim nächsten Mal besser zu machen.
(Henry Ford) http://www.sprueche-zum-nachdenken.eu
[-] Folgende(r) 1 Benutzer sagt Danke an WillWissen für diesen Beitrag:
  • cuba
to top
#3
Hallo Günter

Vielen Dank, der Code hat funktioniert!

LG
cuba
to top
#4
Hallo

Hat doch noch eine kleine Schwierigkeit drin....

Habe die Datei soweit abgespeckt, so dass die wesentliche Frage besser zur Geltung kommt. Das Blatt ist passwortgeschützt, in diesem Falle ist es ABC.

Die grünen Felder sind aber frei zugänglich, es können also nur diese Felder, also auch mit Blattschutz, verändert werden. Wird nun eines der Felder (ging bei meiner ersten Anfrage davon aus, dass es nur D10, D12 und D14 sind) eine Eintragung aktualisiert, soll in H14 das Datum aktualisiert werden.

Ich habe den Code von Günter dann wie folgt abgeändert, aber da hat Excel etwas dagegen....

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("D3,D5,D10,D12,D14,D16")) Is Nothing Then
Range("H14").Value = Date
End If
End Sub



Ich dachte mir, dass ich die Aufhebung des Blattschutzes und dann die Aktivierung des Blattschutzes eigentlich weg nehmen könne, da die D-Zellen ja alle nicht geschützt sind.

Hoffe, es gibt dennoch eine Lösung, denn ich will die Datei meinen Kollegen weitergeben, darum der Blattschutz.

LG
cuba


Angehängte Dateien
.xlsb   Test.xlsb (Größe: 29,31 KB / Downloads: 2)
to top
#5
Hallo,

(14.11.2014, 16:46)cuba schrieb: Die grünen Felder sind aber frei zugänglich, es können also nur diese Felder, also auch mit Blattschutz, verändert werden. Wird nun eines der Felder (ging bei meiner ersten Anfrage davon aus, dass es nur D10, D12 und D14 sind) eine Eintragung aktualisiert, soll in H14 das Datum aktualisiert werden.

Ich habe den Code von Günter dann wie folgt abgeändert, aber da hat Excel etwas dagegen....

Code:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
            If Not Intersect(Target, Range("D3,D5,D10,D12,D14,D16")) Is Nothing Then
                Range("H14").Value = Date
      End If
End Sub


Ich dachte mir, dass ich die Aufhebung des Blattschutzes und dann die Aktivierung des Blattschutzes eigentlich weg nehmen könne, da die D-Zellen ja alle nicht geschützt sind.

Die Zellen in der Spalte D mögen vielleicht nicht geschützt sein, aber wie steht es mit der Zelle H14? Wenn die geschützt ist, muss vor dem Datumseintrag der Blattschutz entfernt werden und danach wieder gesetzt werden.
Gruß Stefan
Win 7 / Office 2007
[-] Folgende(r) 1 Benutzer sagt Danke an Steffl für diesen Beitrag:
  • cuba
to top
#6
Hallo Stefan

Vielen Dank für die schnelle Antwort. Es ist tatsächlich so, dass ich H214 dann ebenfalls als freie Zelle haben muss. Es wäre schön gewesen, wenn dies umgangen hätte werden können....., aber im "schlimmsten Fall" passt das auch.

LG
cuba
to top
#7
Hi,

(14.11.2014, 16:55)cuba schrieb: Vielen Dank für die schnelle Antwort. Es ist tatsächlich so, dass ich H214 dann ebenfalls als freie Zelle haben muss. Es wäre schön gewesen, wenn dies umgangen hätte werden können....., aber im "schlimmsten Fall" passt das auch.

wieso? Was ist denn das Problem, wenn der Schreibschutz durch das Makro , das das Datum eintragen will, aufgehoben und nach der Eintragung wieder gesetzt wird?

Code:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
     If Not Intersect(Target, Range("D3,D5,D10,D12,D14,D16")) Is Nothing Then
        Sheets("Tabelle2").Unprotect
        Range("H14").Value = Date
       Sheets("Tabelle2").Protect
      End If
End Sub
Gruß Ralf

?mage

Die deutsche Rechtschreibung ist Freeware, d.h. du kannst sie kostenlos nutzen.
Allerdings ist sie nicht Open Source, deswegen darfst du sie nicht verändern oder in veränderter Form veröffentlichen.
to top
#8
Hallo,

so könntest Du es umgehen

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
            If Not Intersect(Target, Range("D3,D5,D10,D12,D14,D16")) Is Nothing Then
                Me.Unprotect Password:="ABC"
                Range("H14").Value = Date
                Me.Protect Password:="ABC"
      End If
End Sub
Gruß Stefan
Win 7 / Office 2007
to top
#9
Hi cuba,

so ganz hab ich nicht verstanden, was genau jetzt in deiner Tabelle passieren soll.

Willst du nun das Datumsfeld gegen manuelle Änderungen geschützt haben oder nicht? Und wieso ist jetzt die komplette Spalte D nicht mehr schützenswert?

Ich würde, damit wirklich nur in den manuell auszufüllenden Zellen Einträge vorgenommen werden können, alle Zellen mit Ausnahme dieser Eingabezellen schützen. Da du ein Passwort für den Zellschutz verwendest, musst du dann (vorausgesetzt, du möchtest meinen Vorschlag annehmen) den Code folgendermaßen ändern.


Code:
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

    With Sheets("Tabelle2")
        .Unprotect Password:="abc"
            If Not Intersect(Target, Range("D3,D5,D10,D12,D14,D16")) Is Nothing Then
                    Range("H14").Value = Date
            End If
        .Protect Password:="abc"
    End With
End Sub

Dein Passwort musst du natürlich anstelle des "abc" Textes einfügen.
Gruß Günter
Misserfolg ist eine Chance, es beim nächsten Mal besser zu machen.
(Henry Ford) http://www.sprueche-zum-nachdenken.eu
to top
#10
Hallo Günter,

da es ein Change Ereignis ist, betrifft es natürlich die aktive Tabelle. Deswegen braucht es keine Tabellenangabe. Also With Sheets("Tabelle2") kann weg.

Dann wird bei Dir der Schutz bei jeder Änderung aufgehoben und wieder gesetzt, da Du erst danach prüfst, ob die Änderung im angegebenen Bereich liegt.
Mehr als der Code von Stefan braucht nicht.
Gruß Atilla
to top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste