2017-06-12 3 views
0

Ich habe eine Arbeitsmappe mit mehreren Arbeitsblättern, und ich muss separat einen Zeitstempel erstellen, wenn jedes Blatt zuletzt geändert wurde. Ich habe den Code unten gefunden, aber er zeigt mir, wann das ganze Arbeitsbuch zuletzt geändert wurde, im Gegensatz zu jedem einzelnen Blatt. Ich habe ein paar Varianten ausprobiert, aber ich konnte es nicht zum Laufen bringen. Irgendwelche Vorschläge, wie es geht?Zeitstempel bei der letzten Änderung des Arbeitsblatts

Public Function LastUpdated() 
    LastUpdated= Format(FileDateTime(ThisWorkbook.FullName), "m/d/yy h:n ampm") 
End Function 
+0

Verwenden Sie ein 'Workbook_SheetChange'-Ereignis. Wohin soll der Zeitstempel gehen? – Rory

+0

@Rory in einer beliebigen Zelle im Arbeitsblatt; wollte eine Funktion, damit ich tun konnte = LastUpdated() – Hillash

+0

Ein 'Change' Event wird viel einfacher zu implementieren sein. – Rory

Antwort

0

In jedes Arbeitsblatt geben Sie das folgende Ereignis Makro schreiben:

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
    Application.EnableEvents = False 
     Cells(Rows.Count, Columns.Count).Value = Now 
    Application.EnableEvents = True 
End Sub 

Es zeichnet das Datum/die Uhrzeit auf, dass eine Zelle in der rechten unteren Ecke des Arbeitsblatts geändert wird. Dann wird in einem Standardmodul geben Sie den folgenden UDF():

Public Function Updatee() As Date 
    Application.Volatile 

    Dim w As Worksheet 
    Set w = Application.Caller.Parent 

    Updatee = w.Cells(Rows.Count, Columns.Count).Value 
End Function 

Es wird für das Arbeitsblatt den Inhalt dieser Zelle rechts unten angezeigt.

+0

genau das, was ich gesucht habe! – Hillash

0

folgende in dem Diesearbeitsmappe Objekt Einlochen würde den Stempel zu Zelle C3 (3. Reihe, 3. Spalte)

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) 
    Application.EnableEvents = False 
    Target.Parent.Cells(3, 3) = Format(Now, "m/d/yy h:n ampm") 
    Application.EnableEvents = True 
End Sub 
Verwandte Themen