Frage von Burol, 93

Datumsstempel in Excel einfügen?

Hallo zusammen, ich konnte leider keine Antwort auf mein Problem finden, daher hier: Ich habe einen Excel-Schichtplan, in den sich jeder selbst eintragen soll. Nun möchte ich, dass bei einem Eintrag automatisch ein Kommentar eingefügt wird, wer die Schicht eingetragen hat und wann. Gibt es eine gute Möglichkeit? Danke

Expertenantwort
von Ninombre, Community-Experte für Excel, 41

Das lässt sich in dieser Form nur mit VBA/Makro umsetzen

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A1:D10")) Is Nothing Then
On Error Resume Next
Range(Target.Address).AddComment
If Range(Target.Address).Comment.Text = "" Then
Range(Target.Address).Comment.Text Text:="Eintrag eingefügt von: " & VBA.Environ("Username") & " am: " & Now()
Else:
Range(Target.Address).Comment.Text Text:=Range(Target.Address).Comment.Text & vbCrLf & "Eintrag eingefügt von: " & VBA.Environ("Username") & " am: " & Now()
End If
End If
End Sub

Überwacht wird auf diese Weise der Bereich A1:D10 und zur jeweils geänderten Zelle der Kommentar eingetragen mit Windows-User und Timestamp. Bei bereits vorhandenen Kommentaren wird der bisherige Text um den neuen Eintrag ergänzt.

Das Makro zum entsprechenden Tabellenblatt hinterlegen, nicht in ein eigenes Modul.

Kommst Du damit soweit klar oder soll ich besser noch was zum Ablauf erläutern?

edit - jetzt sehe ich dass azmd108 ja schon das gleiche genannt hat, naja doppelt hält besser.

Kommentar von Ninombre ,

Da ich ja lernfähig bin ;-) und trotzdem nicht mehr editieren kann :-( wird aus hiermit rückwirkend  "range(Target.address)" zu "target"

Antwort
von Herb3472, 48

Wie stellst Du Dir den Eintrag der jeweiligen Person vor? Manuell, Chipkarte, Kellner-Button,...?

Das aktuelle Datum + Uhrzeit kann man mit Jetzt() eintragen.

Kommentar von Burol ,

Jeder trägt sich manuell ein. Ich möchte aber, dass der Kommentar automatisch kommt, wenn jemand eine Änderung einträgt. Ich möchte vermeiden, dass jemand den Stempel manuell setzt. Ich habe es schon mit verschiedenen VBA Scripts versucht, aber nichts klappt bisher.

Kommentar von Herb3472 ,

Dafür würdest Du einen zeitlichen Ablauf, eine "History" benötigen. Sowas kannst Du mit einen Datenbank-Programm wie Access (Teil von MS Office Professional) realisieren. Excel ist ein Spreadsheet-Programm und nicht für sowas vorgesehen.

Kommentar von Iamiam ,

Hat xl nicht sogar einen History-Button? Hab ich zwar nie gebraucht, aber ich erinnere mich, sowas mal gesehen zu haben, Button mit Gridlines und roter/n Zelle/n drin. (noch im alten 2000 oder so)

Kommentar von Iamiam ,

geh mal mit der rechten Maustaste auf das benutzerdefinierbare Menüband (Symbolleiste für den Schnellzugriff, da wo Widerrufen und Wiederholen sind). Geh auf Punkt anpassen, weitere Befehle hinzufügen, Kategorie alle. in der alphabetischen Knopfliste findest Du "Änderungen nachverfolgen" und ein paar Verwandte. Das öffnet einen Dialog, in dem Du Optionen festlegen kannst (erst mal links oben ankreuzen, sonst sind die anderen Optionen blockiert!) Der letzte Punkt bleibt bei mir ausgegraut, vllt in neueren Versionen?

Probier das mal, ich selbst hab keine Erfahrung damit, ich brauch die Leiste für den Schnellzugriff für ganz andere Sachen!

Kommentar von Herb3472 ,

Hat xl nicht sogar einen History-Button?

Niemand würde auf die Idee kommen, z.B.
ein Arbeitszeiterfassungs- oder Registrierkassenprogramm oder Ähnliches, wo Geschäftsvorfälle kontinuierlich aufgezeichnet werden müssen, mit Excel zu "erschlagen". Dafür gibt es Datenbanken.

Kommentar von Iamiam ,

das Jetzt() bleibt aber nicht, sondern ändert sich laufend mit der Zeit.

Fixiert geht die Kombination folgender Eingaben:

Shortcut Strg+. (Punkt), dann Leerzeichen, dann Strg+: (Doppelpunkt)

Probiers aus! Lässt sich auch innerhalb eines Fließtextes verwenden!

Antwort
von azmd108, 50

Nur mit VBA-Programmierung.

z.B. So (nur ein kurzes, kleines Beispiel, man sollte hier noch etwas mehr tun - in das Worksheet Change Ereignis).

Als Text kannst du den Benutzernamen auslesen lassen und eintragen und natürlich noch vieles mehr.

On Error Resume Next
Target.AddComment
Target.Comment.Text ("Hallo")



Kommentar von Burol ,

Hi, genau sowas suche ich.

Der Schichtplan geht von C2 bis G101.

Hättest du ggf den kompletten Code, den ich einfügen kann?

Danke.

Kommentar von azmd108 ,

So könnte das Ganze aussehen,Inkl Historie im Kommentar, ich kenne aber natürlich deine weiteren Rahmenbedingungen nicht. :

Als Benutzername wird der Benutzer abgefangen, der im Excel hinterlegt ist (!) Das kann zu Problemen führen, wenn mehrere Leute am Gleichen System arbeiten oder der Benutzer nicht gepflegt ist.

Private Sub Worksheet_Change(ByVal Target As Range)

Dim var As String

On Error Resume Next

If Not Intersect(Target, Range("C2:G101")) Is Nothing Then
var = Target.Comment.Text
Target.AddComment
Target.Comment.Text (var & vbLf & vbLf & "Benutzer: " & Application.UserName & vbLf & "Datum + Uhrzeit: " & Now)
End If

End Sub

wenn eine Historie nicht gewünscht ist, einfach den Part

Dim var as String
var = Target.Comment.Text
var & vbLf & vbLf &

löschen

Kommentar von azmd108 ,

Nachtrag: So kannst du z.b. Alle Kommentare im Bereich wieder löschen (Sheetname anpassen):

Sub delete_comments()

On Error Resume Next

Sheets("Tabelle1").Cells.Range("C2:G101").SpecialCells(xlCellTypeComments).ClearComments

End Sub

Kommentar von Burol ,

Hi,

ich habs genau so abgeschrieben, aber leider erstellt Excel keinen Kommentar. :(

Kann es daran liegen, dass die Schichten per Drop Down ausgewählt werden?

Kommentar von azmd108 ,

Du musst das Ganze ins Worksheet_Change-Ereignis des entsprechendes Arbeitsblattes packen, dann klappt es.

Kommentar von Burol ,

Was muss ich? :D

Bzw wie?

Kommentar von azmd108 ,

VBA-Editor mit ALT+F11 öffnen,

in der Linken Spalte unter "Microsoft Excel Objekte" das gewünschte Tabellenblatt doppelklicken.

Den gesamten von mir geposteten Code (mein erstes Kommentar) kopieren und einfügen. Dann klappts

Kommentar von Burol ,

Das habe ich. Immernoch kein Kommentar. Liegt es vielleicht am DropDown Menü?

Ich bekomme weder Kommentar, noch Fehlermeldung.

Kommentar von azmd108 ,

Hmm bei mir funktioniert es. Auch mit einem DropDown-Menü sollte es an sich funktionieren. Dann kann ich dir leider nicht weiterhelfen (ohne deine Datei gesehen zu haben).

Kommentar von Burol ,

Also ich habs ausprobiert: Ohne Drop Down gehts. Mit leider nicht.

Der Kommentar ist auch frei bearbeitbar. Hätte den gerne gesperrt für manuelle Eintragungen.

Kommentar von azmd108 ,

Zwei Möglichkeiten die mir Einfallen:

1. Blatt sperren / schützen

2. den "Rechtsklick" in dem Bereich deaktivieren (dann kann man aber z.b. das Kommentarfenster auch nicht mehr vergrößern oder verkleinern. Um das zu umgehen, bitte in den ersten Code unter

"Target.Comment.Text" bitt das hier einfügen:

Target.Comment.Shape.TextFrame.AutoSize = True

PS: Bei mir geht es auch mit DropDown, komisch


Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)

If Not Intersect(Target, Range("C2:G101")) Is Nothing Then
Application.CommandBars("Cell").Enabled = False
Else
Application.CommandBars("Cell").Enabled = True
End If

End Sub
Kommentar von Burol ,

Ich hab die Lösung.

Es lag tatsächlich am Blattschutz. In der Routine einfach den Blattschutz aufheben, den Kommentar machen lassen und wieder schützen. Dann klappts. :)

Vielen vielen Dank für die Hilfe.

Keine passende Antwort gefunden?

Fragen Sie die Community

Weitere Fragen mit Antworten