安全时间戳-VBA



我想在Excel工作表上创建一个安全的时间戳。我正在使用的VBA将自动添加当前用户的用户名、时间和日期,当用户将信息放入列a时。因此,如果用户将某些内容放入单元格A1,则B1将自动填充其用户名,C1将填充时间和日期。唯一的问题是,这种方法不安全,因为用户可以在自动填充信息后更改信息。我想将代码添加到此VBA中,以便在填充信息后锁定所有三个单元格。

我计划使用"保护工作表"功能,只允许用户"选择未锁定的单元格"。因此,如果VBA可以自动锁定单元格,则用户将无法更改信息。

此外,我已经使用了我。在改变细胞和我之前取消保护。在那之后保护仍然不起作用

任何帮助都将不胜感激!

假设我们从工作表上的所有单元格开始解锁,工作表密码用密码保护:

6LgSdHjc2uOssv0e1LDI

以下事件宏将:

  1. 取消工作簿保护
  2. 检测A列中的条目
  3. 将用户名放在B列中,将日期/时间戳放在C栏中
  4. 锁定A、B、C列中的条目
  5. 重新保护工作表

这将进入工作表代码区域:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim A As Range, MyPass As String, sh As Worksheet
    Dim unit As Range
    Set A = Range("A:A")
    MyPass = "6LgSdHjc2uOssv0e1LDI"
    Set sh = ActiveSheet
    If Intersect(Target, A) Is Nothing Then Exit Sub
    Set unit = Union(Target, Target.Offset(0, 1), Target.Offset(0, 2))
    Application.EnableEvents = False
    sh.Unprotect (MyPass)
    unit.Locked = False
        Target.Offset(0, 1) = Environ("Username")
        Target.Offset(0, 2) = Now()
    unit.Locked = True
    sh.Protect (MyPass)
    Application.EnableEvents = True
End Sub

因为它是工作表代码,所以安装起来非常容易,使用起来也很自动:

  1. 右键单击Excel窗口底部附近的选项卡名称
  2. 选择"查看代码"-这将打开一个VBE窗口
  3. 粘贴内容并关闭VBE窗口

如果你有任何顾虑,首先在试用工作表上试试。

如果保存工作簿,则宏将与工作簿一起保存。如果您使用的是2003以后的Excel版本,则必须保存文件为.xlsm而不是.xlsx

删除宏:

  1. 如上所述打开VBE窗口
  2. 清除代码
  3. 关闭VBE窗口

要了解有关宏的更多信息,请参阅:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

要了解有关事件宏(工作表代码)的更多信息,请参阅:

http://www.mvps.org/dmcritchie/excel/event.htm

必须启用宏才能运行

最新更新