Frage von Whyrea, 36

In Excel Zelle bearbeiten ohne Löschung der Funktion?

Hallo,

Ich habe ein Excesheet in dem ich in bestimmten Zellen das Heutige Datum eintragen lassen will. Hierfür verwende ich die =HEUTE Funktion in den Zellen. Das Dokument soll mit einem Blattschutz versehen werden jedoch soll das Datum weiter Bearbeitbar bleiben. Dies habe ich auch über die "Benutzer dürfen Bereiche bearbeiten" Auswahl einstellen können. Nun habe ich jedoch das Problem sollte es zu einer Manuellen Änderung des Datums kommen wird nun auch die =Heute Funktion mi gelöscht diese würde ich jedoch gerne behalten. Sprich wenn Der Nutzer ein anderes Datum eingibt iwird dies angenommen. Sollte der Nutzer nun das zuvor andere Datum löschen zu einem Späteren Zeitpunkt soll die Zelle wieder auf die =Heute Funktion "umschalten". Gedanklich dachte ich an eine mehr oder minder Wenn-Dann Funktion aber wie ich diese umsetzen könnte weiss ich nicht. Hat jemand einen Lösungsansatz?

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von Oubyi, Community-Experte für Excel, 22

DAS lässt sich nicht über ein Formel bewerkstelligen, sondern nur über VBA.
Falls Du das willst, dann so:
Mach einen Rechtsklick auf den Tabellenreiter (unten, da wo z.B. Tabelle1 steht) und gehe dann auf "Code anzeigen...".
In das große Fenster des VBA-Editors, der sich dann öffnet kopierst Du folgenden Code:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1")) Is Nothing Then
If Target.Value = "" Then Target.FormulaLocal = "=HEUTE()"
End If
End Sub

Der Code funktonier für Die Zelle A1. Die kannst Du leicht anpassen.
Für mehrere Zellen einfach die inneren drei Zeilen wiederholen (geht auch eleganter, ist aber für Einsteiger so einfacher. Z.B.:

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1")) Is Nothing Then
If Target.Value = "" Then Target.FormulaLocal = "=HEUTE()"
End If
If Not Intersect(Target, Range("B1")) Is Nothing Then
If Target.Value = "" Then Target.FormulaLocal = "=HEUTE()"
End If
End Sub

Teste mal genau, ich habe das jetzt nur auf die Schnelle zusammengestrickt.Die

Datei musst Du danach aber als .xlsm speichern, und Makros zulassen.

Hilft Dir das?

Kommentar von Whyrea ,

Danke der Code hat wunderbar funktioniert genau das habe ich gebraucht :) ich habe bevor ich tausend codes für jede Zelle mache einfach die Range in einem befehl gegeben mit 'Range ("A3:A30")'

Kommentar von Oubyi ,

Das geht natürlich auch. Ich war von nicht zusammenhängenden Zellen ausgegangen.
Freut mich, dass ich helfen konnte.

Kommentar von Oubyi ,

Danke fürs

Antwort
von gfntom, 21

Lass das "manuelle" in eine andere Zelle Eintragen (z.b A1):

In der Zelle, wo du jetzt deine HEUTE- Funktion hast, schreibst du (z.B in A2):

=WENN (A1<>0;A1;HEUTE())

Sprich: wenn A1 leer ist, steht in A2 das HEUTE-Datum, sonst steht dort der gleiche Wert wie in A1 (also das dort eingegebne Datum).


Expertenantwort
von Iamiam, Community-Experte für Excel, 16

einfacher wäre es, in eine andere Zelle das heutige Datum einzutragen mit dem Shortcut Strg+. (Punkt). geht ganz schnell, auch innerhalb eines Fließtextes, dann in die offene Zelle.

Probiers aus und gib diese Zelle für die Teilnehmer frei! (vielleicht brauchst Du auch dann das heute() gar nicht mehr?)

übrigens Zeit: Strg+: geht genausoschnell, und wenn Du Strg+.+Leer+Strg+: (Colon) einträgst, hast du das komplette Jetzt() im Format TT.MM;JJJJ hh:mm, aber sekundengenau und festgeschrieben 

Antwort
von abibabo, 17

Baue eine Wenn Funktion ein. Wenn in B1 etwas manuell eingetragenes steht, dann nimm es, ansonsten nehme  eben die Formel. Also etwa in Zelle A1: "=Wenn(B1 <> "";B1;Heute())".

Dann könntest jedesmal wenn das sheet geöffnet wird ein Makro automatisch ausführen lassen, dass dafür sorgt, dass B1 leer ist. Das Makro muss "Private Sub Auto_Open()" benannt werden und dann wird es jedesmal ausgeführt, wenn du das Spreadsheet öffnest.

Hilft das?

abibabo.de

Keine passende Antwort gefunden?

Fragen Sie die Community