Excel. Datum aktualisieren per Button
Hallo, im Programm Excel kann man verschiedene Buttons einfügen die mit Makros, oder ähnliches belegt werden können.
Ich möchte jetzt einen Button so belegen, dass sich bei jedem Klick darauf, meine Datumsanzeige (in einem beliebigen Feld) aktualisiert.
Mir ist klar, das "=Datum()" dieses Feld immer aktualisieren würde. Aber ich habe eine Logistikdatei die von verschiedenen Mitarbeitern (MA) geöffnet, aber nur von zwei Personen aktualisiert wird. Wenn der MA die Datei nicht aktualisiert hat, dann soll das Datum auch nicht aktualisiert werden. Da wäre ein Button nicht schlecht...
Für die anderen Mitarbeiter habe ich diese Seite als HTML angezeigt. Jetzt muss ich nur noch die beiden anderen absichern, indem sie nach ihrer Aktualisierung immer auf den Button drücken sollen.
Danke schon mal im Voraus.
Grüße Oli
4 Antworten
Ich würde ich dies auch so machen wie st0neface.
Der andere Vorschlag mit dem Datum in eine Zelle einfügen, dann unsichtbar machen, und dann doch noch extra ein Makro mit Kopierfunktion zu erstellen macht keinen Sinn und ist unnötig.
.
Einfach dieses Makro hier datum genannt, oder den Code von stOneface :
Sub datum()
Range("A1").Select
ActiveCell = Date
End Sub
das Makro dem gewünschten Button zuweisen und fertig, ist die Zelle des Datums nicht A1, einach im Code die richtige Zelle eintragen wo das Datum steht.
Die Vorschläge funktionieren alle. So, jetzt hat auch jeder einen Daumen...
Anderer Vorschlag:
- Klicke im Visual-Basic-Editor im Projektexplorer doppelt auf das betreffende Tabellenblatt
- Wähle rechts oben über der weißen Fläche aus der Auswahlliste "Worksheet" aus.
- Wähle rechts daneben aus der Auswahlliste "Change" aus.
Unten steht jetzt folgender Code:
Private Sub Worksheet_Change(ByVal Target As Range) End Sub
Zwischen Private... und ...End Sub gibst du ein: Range("A1").value=Now oder Range("A1").Value = Format(Now, "dd.mm.yyyy"). Letzteres, wenn du nur das Datum willst.
Das sieht dann insgesamt so aus:
Private Sub Worksheet_Change(ByVal Target As Range)
Range("A1").Value = Format(Now, "dd.mm.yyyy")
End Sub
Nun müssen die Benutzer nicht mehr einen Button klicken, sondern sobald etwas geändert wird, wird automatisch das Tagesdatum in die Zelle A1 geschrieben.
Diese Lösung gefällt mir sehr gut, ist es möglich dies noch zu verfeinern, sodass die Zelle nur dann aktualisiert wird, wenn tatsächlich irgendwo eine Eingabe vorgenommen geändert wird ?
Hmm, das Change-Ereignis wird nur dann initiiert, wenn eine Eingabe/Änderung gemacht wird. Geht deine Frage in die Richtung, dass bei reinen Änderungen (also nicht Neueingabe) nichts passieren soll? Ansonsten müsste es das eigentlich schon sein...
Hmm, im Moment mit obigen Code erfolgt eine Aktualisierung des Datums in A1 jedesmal dann, wenn irgendeine Zelle in der Arbeitsmappe ausgewählt wird.
Meine Frage geht dahin, dass erst bei Eingabe oder Änderung in einer Zelle eine Aktualisierung stattfindet.
.
Kurz: Jemand öffnet die Datei, klickt in eine Zelle und es erfolgt eine Aktualisierung des Datums.
Ich möchte dies aber nicht, sondern erst nachdem tatsächlich eine Änderung in einer Zelle vorgenommen wurde.
Hab's gerade erst gelesen. Das was du beschreibst passiert eigentlich bei SelectionChange während Change tatsächlich nur dann greift, wenn etwas geändert wird. Change greift definitiv nicht bei bloßem Auswählen einer Zelle (einfacher Klick). Allerdings musst du aufpassen. Doppelklick in eine Zelle und anschließender Return bewirkt auch das Change-Ereignis (wahrscheinlich meinst du das). Aus meiner Sicht hat man keine Chance auch das noch abzufangen, denn es gibt keine Eigenschaft OldValue wie in Access, so dass man den alten gegen den neuen Wert vergleichen könnte... Aber mal ehrlich: wer klickt schon doppelt in eine Zelle, ohne sie ändern zu wollen?
ich würde auf einer beliebigen Zelle das aktuelle Datum einfügen =heute(), dieses unsichtbar machen und im Makro eine Kopierfunktion dieser Zelle schreiben
Für das Feld A1:
cells(1,1) = date
Wow, danke für das Sternchen, aber dies hätte eigentlich stOnface verdient, der war mit der Antwort ein paar Stunden früher als ich.
.
Aber will ja nicht undankbar sein, von daher Danke :-)