Statisches Datum in Excel einfügen

Hallo!

Ich habe eine Tabelle mit drei Spalten, wenn in der zweiten Spalte ein Wert steht dann soll in der Spalte daneben das aktuelle Datum eingefügt werden.

Zur Verdeutlichung:

http://www.myimg.de/?img=excela5737.jpg

Das Datum sollte aber statisch sein und sich nicht jedesmal von alleine aktuallisieren.

Die Wenn- Abfrage ist ken Problem aber bei dem statischen Datum weiss ich nicht weiter.

Also meine Frage:

Mit welcher Funktion füge ich automatisch das aktuelle statische Datum ein?

Vielen Dank im voraus!

M.f.G.

Bernd

Mit welcher Funktion füge ich automatisch das aktuelle
statische Datum ein?

Hallo Bernd
Ich glaube, hier findest Du die Lösung:
http://forum.geizhals.at/t572886,4816206.html#4816206
Bei mir jedenfalls funktioniert es.
Grüsse Niclaus

Hallo,
du koenntest etwas Handarbeit mchen. Erst das Datum einfuegen lassen, so dass es sich noch aendern wuerde.
Und im zweiten Schritt dann den Zellinhalt festschreiben
>Zelle(n) markieren
>kopieren
(in dieselbe Zelle, also ueberschreiben)
>bearbeiten >Inhalte einfuegen >Werte
Gruss Helmut

Hallo!

Leider komme ich mit den geposteten Lösungen nicht klar! :frowning:

Ich habe selber etwas versucht aber das funktioniert auch nicht richtig!

http://www.myimg.de/?img=excelTabelle70910.jpg
http://www.myimg.de/?img=excelvbae1e4f.jpg

Die VBA Anwendung für sich alleine funktioniert aber wenn ich die VBA- Funktion über die Wenn- Funktion aufrufe:
‚=WENN(C5;miDatum();"")‘,
dann bekomme ich eine Zirkelbezugswarnung!

Könnte mir einer von euch weiterhelfen?

Danke für eure Hilfe im voraus!

M.f.G.

Bernd

Hi Bernd,

http://www.myimg.de/?img=excelTabelle70910.jpg
http://www.myimg.de/?img=excelvbae1e4f.jpg

besser ist, du lädst eine kleine Beispieldatei hoch, siehe FAQ:2861

Die VBA Anwendung für sich alleine funktioniert

erstaunlich

aber wenn ich
die VBA- Funktion über die Wenn- Funktion aufrufe:
‚=WENN(C5;miDatum();"")‘,
dann bekomme ich eine Zirkelbezugswarnung!

nicht erstaunlich, normalerweise schreibt man Funktionen so daß sie einen Rückgabewert liefern, also zum Ende des Codes sowas
miDate=Date
o.ä.

Deine Funktion hat, da dies fehlt, einen Rückgabe wert von o, oder nothing oder 1.1.1900, habs nicht nachgeprüft.

Der Zirkelbezug hat eine andere Ursache, probier das mal:
Function midate() As Date
Range(„A3“) = Date
End Function

und schreibe in A1,A2 und A3
=midate() rein
Entweder bekommst du den Fehler „#Wert“, wahrscheinlich weil die Formel keinen Rückgabewert hat, das kommt daher, daß sie mitten im Code abbricht weil sie nur in die Zelle schreiben kann in der sie aufgerufen wird.

Steht sie in der Zelle in der sie schreiben soll kommt es halt zu Zirkelbezug, warum weiß man in der Schweiz *starkschätz*, bei mir hat sich das noch nicht so rumgesprochen :smile:)

Könnte mir einer von euch weiterhelfen?

Ich habe den dir genannten Code angepasst, ungetestet. Klicke unten mit rechter Maustaste auf den Blattnamen, dort dann „Code anzeigen“, im aufgehenden Fenster dann den nachstehenden Code reinkopieren, Editor schliessen.

Option Explicit
'
Private Sub Worksheet\_Change(ByVal Target As Range)
Dim rngZelle As Range
Set Target = Application.Intersect(Target, Range("C:C"))
If Not Target Is Nothing Then
 On Error GoTo ErrorHandler
 Application.EnableEvents = False
 For Each rngZelle In Target
 With rngZelle
 .Offset(0, -1).ClearContents
 If .Value "" Then
 .Offset(0, -1).Value = Date
 .Offset(0, -1).NumberFormat = "dd.mm.yyyy"
 End If
 End With
 Next rngZelle
End If
ErrorHandler:
 Application.EnableEvents = True
End Sub

Gruß
Reinhard

Codeänderung
Hi Bernd,

wenn du im eben von mir geposteten Code oder auch mit dem Code der dir genannt wurde Montags etwas einfügst, aber am Mittwoch dir auffällt daß da ein Tippfehler drin ist oder sonstwas und du dann die Zelle löschst und neu einträgst wird fälschlicherweise das Datum vom Mittwoch eingetragen.
Das habe ich jetzt geändert, jetzt bleibt das Datum unverändert auch wenn du in C etwas löschst.

Option Explicit
'
Private Sub Worksheet\_Change(ByVal Target As Range)
Dim rngZelle As Range
Set Target = Application.Intersect(Target, Range("C:C"))
If Not Target Is Nothing Then
 On Error GoTo ErrorHandler
 Application.EnableEvents = False
 For Each rngZelle In Target
 With rngZelle
 If .Value "" And .Offset(0, -1) = "" Then
 .Offset(0, -1).Value = Date
 .Offset(0, -1).NumberFormat = "dd.mm.yyyy"
 End If
 End With
 Next rngZelle
End If
ErrorHandler:
 Application.EnableEvents = True
End Sub

Gruß
Reinhard

Hallo!

Danke, für die schnelle Hilfe ich werde deine Änderungen und Anregungen im laufe der Woche ausprobieren!

Natürlich bekommst du auch eine Rückmeldung ob alles geklappt hat!

Nochmanl vielen Dank für deine schnelle und kompetente Hilfe!!!

M.f.G.

Bernd