您好我遇到了工作簿的最后保存选项,其中代码允许跟踪上次修改并显示在单元格中的日期和时间。我想知道vba是否允许跟踪数据和在特定工作表上最后修改它的时间,让我们说Sheet1。因此,每次更改并保存在工作表1中时,它将仅反映该工作表的保存时间和日期。这是我到目前为止工作簿的代码,尝试将.Sheets("Sheet 1")
添加到代码中,但它跟踪我访问页面的时间而不是我编辑的时间。这些是我工作簿中的代码。
Private Sub Workbook_Open()
Call starttheClock
End Sub
Sub Workbooky()
ActiveWindow.ScrollRow = 1
End Sub
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If ActiveSheet.Name = "Index" Then Exit Sub
Application.EnableEvents = 0
i = ActiveSheet.Index
With Sheets("Index")
.Cells(i, 1) = ActiveSheet.Name
.Cells(i, 2) = Now
End With
Application.EnableEvents = 1
End Sub
答案 0 :(得分:1)
您无法保存工作表。总是你必须保存整个工作簿。这就是它出现错误的原因。
如果您想知道编辑每张纸的确切时间和日期,可以在下面找到。
http://www.ozgrid.com/forum/showthread.php?t=46624
Private Sub Worksheet_Change(ByVal Target As Range)
Sheets("Index").Range("B2") = Now
End Sub
答案 1 :(得分:1)
只是为上面的答案添加一点混淆,如果你有一个名为“索引”的工作表,并希望每次有一个更改时都有一个添加到工作表的日期,可能是一个代码将进入工作簿模块。然后,只要有一个代码可以检查任何工作表是否有变化。
这是工作簿模块所在的位置,代码属于那里。
这假设您有一张名为“Index”的工作表,一旦您正确地将其命名为任何您想要的名称。 代码中的实际工作表名称和工作表名称必须完全匹配。
以下是工作簿模块中的代码。将其复制并粘贴到工作簿模块中
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If ActiveSheet.Name = "Index" Then Exit Sub
Application.EnableEvents = 0
i = ActiveSheet.Index
With Sheets("Index")
.Cells(i, 1) = ActiveSheet.Name
.Cells(i, 2) = Now
End With
Application.EnableEvents = 1
End Sub