ich habe folgendes Problem und bin leider totaler Anfänger mit Makros etc.:
Ich möchte über eine Schaltfläche die aktuelle Zeit in die gerade aktive Zelle einfügen. Ich habe dafür folgendes einfaches Makro:
Sub Zeit aktualisieren()
ActiveCell.Formula = „= NOW()“
End Sub
Das klappt eigentlich ganz gut. Die Zeit wird mit Klick auf die Schaltfläche in die aktive Zelle eingetragen. Aber wenn ich jetzt eine neue Zelle aktiviere, um dort eine neue Zeit mit der Schaltfläche einzutragen, wird auch die erste Zeit/Zelle mit der neuen Zeit überschrieben.
Das soll natürlich nicht so sein.
Was mache ich falsch, bzw. wie muss der Code aussehen, damit das nicht passiert?
Problem ist dabei, dass mit der Eingabe neuer Werte und Enter auch automatisch alle Formeln im Tabellenblatt neu berechnet werden. Da sich die aktuelle Zeit ändert, wird die natürlich angepasst.
Lösung daher über „Kopieren“ und „Einfügen Werte“ an der eben angeklickten Stelle. Ich hab´s mal rein geschrieben. Außerdem habe ich noch eine automatische Anpassung der Spaltenbreite vorgenommen.
Sub ZeitAktualisieren()
'Aktuelle Zeit einfügen
ActiveCell.Formula = „= NOW()“
'Formel durch Wert ersetzen
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
'Automatische Spaltenbreite
Selection.Columns.AutoFit
End Sub
Du fügst mit Deinem Makro ja eine Formel ein, die immer „Jetzt“ berechnet. Startest Du den Makro erneut, berechnet Excel die Formel erneut, und deshalb ändert sich auch in der ersten Zelle die Zeit wieder - eben auf das neue „Jetzt“.
Wenn Du den Wert nur einmal ermitteln und dann aber in den alten Zellen ‚für immer‘ beibehalten willst, mußt Du Dein Makro noch um den Schritt kopieren+Werte einfügen ergänzen: