PDA

Vollständige Version anzeigen : Datum einmalig eintragen


SubLexx
07.07.2014, 10:05
Hallo :)

Ich möchte das der aktuelle Monat in Zelle O2 erscheint im Format "MMMM JJJJ" aber das Datum darf nur einmalig eingetragen werden beim Öffnen und es darf nicht das Datum zur aktuellen Zeit sein sondern immer der 1. des Monats.

Wenn ich die Excel Vorlage am 03.Juli öffne muss in O2 der 01.07.2014 stehen als Format "MMMM JJJJ" ^^'
Dies muss sein weil von O2 die Tage berechnet werden bis zum 30./31. o.o'

Wollte es mit einer Wenn Funktion machen aber mit Heute, Jetzt funktioniert das ja nicht da diese sich ja immer neu berechnen und auch leider das aktuelle Datum nehmen :/

Ist sowas mit ein VBA Code lösbar? :boah:

chris-kaiser
07.07.2014, 10:10
Hi,

und die Zelle noch formatieren Format "MMMM JJJJ"

=DATUM(JAHR(HEUTE());MONAT(HEUTE());1)

Mc Santa
07.07.2014, 10:11
Hallo,

schau mal, etwa so?
Private Sub Workbook_Open()
With ThisWorkbook.Worksheets("Tabelle1").Range("O8")
If .Value = "" Then
.Value = DateSerial(Year(Now), Month(Now), 1)
.NumberFormat = "mmmm yyyy"
End If
End With
End Sub

Feedback erwünscht :)

VG

@ Chris:
[...] aber das Datum darf nur einmalig eingetragen werden [...]

chris-kaiser
07.07.2014, 10:14
Hi,

ja,
bei mir wird nur einmalig eingetragen. :)
und nicht bei jedem öffnen. :grins:

Mc Santa
07.07.2014, 10:18
Hallo Chris

vielleicht habe ich gerade einen Denkfehler, aber wenn ich deine Formel benutze, dann ändert sich doch das Datum nächsten Monat, oder nicht?

VG

chris-kaiser
07.07.2014, 10:19
Hi,

aber klar ändert es sich :), das was Du mit VBA gemacht hast ist identisch mit der Formel........
nur bei deiner Lösung bleibt es jetzt immer bei dem gleichen Monat, was ja auch gewünscht sein könnte, bei mir wird im August der August, bei deiner VBA Lösung bleibt der Juli.

Mc Santa
07.07.2014, 10:22
Hi,

aber klar ändert es sich :), das was Du mit VBA gemacht hast ist identisch mit der Formel.

Nein, das Datum wird nur eingetragen, wenn die Zelle leer ist und das ist ab dem ersten Eintrag nicht mehr der Fall.

chris-kaiser
07.07.2014, 10:31
Hi,

da hat sich mein Edit, mit deinem Beitrag überschnitten.
Da kannst Du schon Recht haben..., ich dachte einfach das der Fragestellende immer nur den aktuellen 1. des Monats haben möchte.

Es gäbe aber auch eine Möglichkeit dies per Formel einzufrieren, nur würde ich es selber dann auch mit VBA machen.
http://ms-office-forum.net/forum/showpost.php?p=994707&postcount=6

SubLexx
07.07.2014, 10:39
@chris-kaiser
Also die Formel funktioniert auf jeden fall schon einmal :)
Auch das sich das Datum ändert ist erwünscht aber nur beim erzeugen einer neuen Arbeitsmappe aus Basis der Vorlage ^^
Die erzeugte Arbeitsmappe muss das Datum behalten da es sich dabei um ein Arbeitsnachweis handelt :)
Das mit dem einfrieren per Formel sieht schon mal interessant aus :D
Werd es gleich mal testen ^_^!

@Mc Santa
Wenn ich den Code in das Modul einfüge passiert leider nichts :(
Hab es eingefügt, Vorlage mit Makros gespeichert, geschlossen, geöffnet aber leider wird nix eingetragen :/

Hab die Vorlage mal als Anhang hinzugefügt. Musste diese in eine Zip packen da das Format *.xltm beom hochladen nicht ünterstürzt wird.

chris-kaiser
07.07.2014, 10:49
Hi,

der Code gehört in "dieseArbeitsmappe" und nicht in das Tabellenblatt.
füge in der xltm

das hier ein


Private Sub Workbook_Open()
With ThisWorkbook.Worksheets("Nachweis").Range("O2")
If .Value = "" Then
.Value = DateSerial(Year(Now), Month(Now), 1)
.NumberFormat = "mmmm yyyy"
End If
End With
End Sub

Mc Santa
07.07.2014, 10:53
Hallo,

leider wird das Open-Ereignis nicht ausgeführt, wenn man aus der Vorlage heraus eine neue Arbeitsmappe erstellt. Dadurch wird das Datum erst eingetragen, wenn man die Datei noch einmal öffnet.
Hat jemand eine Idee, wie man das Makro am besten ausführen lässt?

VG

chris-kaiser
07.07.2014, 10:56
Hi,

Office 2013 geht es ohne Probleme. Eine Andere Version habe ich jetzt gerade nicht zum Testen.

Mc Santa
07.07.2014, 11:02
Hallo,

bei mir nun auch (Excel 2007), bin nicht sicher, warum zuvor nicht. Ich tippe auf Anwenderfehler ;)

VG

SubLexx
07.07.2014, 11:09
Danke euch beiden :D

Beide Lösungen funktionieren, mit Formel dann jedoch mit dem Link zum einfrieren noch dazu ^^
Hab mich aber für VBA entschieden, ist gemütlicher :D