0

可能重复:
使用 VBA 的 Excel 工作表的日期修改时间戳

嗨,我有一个 excel 工作簿...我想记下工作簿 1 的单元格 A2 中的时间戳,以便在工作簿的 sheet2 的任何行或列中进行的最新修改。

所以我的问题有两个:1.想跟踪最新的修改时间。2. 想把 sheet1 的单元格 A2 设为用户保护,这样任何人都不能篡改跟踪的时间戳。这是我正在工作的代码......它不正确,因为它没有做任何事情......如果它会做任何事情,那么我分享它肯定没有任何问题,但因为它没有做任何事情所以它有点没用。

       Private Sub worksheet_change(ByVal Target As Range)
       Dim Row, Col

       For Row = 2 To Sheet2.UsedRange.Rows.Count
       For Col = 1 To Sheet2.UsedRange.Columns.Count
       If Target.Cells(Row, Col) Then
       Application.EnableEvents = False
       Sheet1.Cells("A2") = now()
       Application.EnableEvents = True
       End If
       Next Col
       Next Row

       End Sub        
4

1 回答 1

0

为了让您朝着正确的方向前进:

  • 右键单击工作表 2 的工作表选项卡。
  • 选择“查看代码”。
  • 您将在模块顶部看到两个下拉菜单。在第一个中选择“工作表”。在第二个中选择“更改”。
  • 这将为 Worksheet_Change 过程创建模板,只要用户更改 Sheet2 中的值,就会触发该模板。
  • 使用它将时间戳写入 sheet1 的单元格 A2。

对于问题的第二部分,请保护工作表 1。在代码中,即:

ThisWorkbook.Worksheets("Sheet1").Protect DrawingObjects:=True, Contents:=True, Scenarios:=True

在您写入单元格 A2 之前,请先取消保护它:

ThisWorkbook.Worksheets("Sheet1").Unprotect

如果要添加密码,请在帮助中查找保护和取消保护方法。

(请记住,即使使用密码,工作表保护也很弱。对于临时工作来说还可以,但如果用户决心这样做,则可以被用户破解。更好的方法可能是将值写入工作表它具有 xlVeryHidden 的可见属性,因此大多数用户甚至都不知道它的存在(如果您对 VBA 项目应用保护)。同样,并非不可破解,但比将其放在可见工作表中更好。)

于 2012-12-02T08:30:54.643 回答