我想在Excel工作表上创建一个安全的时间戳。我正在使用的VBA将自动添加当前用户的用户名、时间和日期,当用户将信息放入列a时。因此,如果用户将某些内容放入单元格A1,则B1将自动填充其用户名,C1将填充时间和日期。唯一的问题是,这种方法不安全,因为用户可以在自动填充信息后更改信息。我想将代码添加到此VBA中,以便在填充信息后锁定所有三个单元格。
我计划使用"保护工作表"功能,只允许用户"选择未锁定的单元格"。因此,如果VBA可以自动锁定单元格,则用户将无法更改信息。
此外,我已经使用了我。在改变细胞和我之前取消保护。在那之后保护仍然不起作用
任何帮助都将不胜感激!
假设我们从工作表上的所有单元格开始解锁,工作表密码用密码保护:
6LgSdHjc2uOssv0e1LDI
以下事件宏将:
- 取消工作簿保护
- 检测A列中的条目
- 将用户名放在B列中,将日期/时间戳放在C栏中
- 锁定A、B、C列中的条目
- 重新保护工作表
这将进入工作表代码区域:
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
因为它是工作表代码,所以安装起来非常容易,使用起来也很自动:
- 右键单击Excel窗口底部附近的选项卡名称
- 选择"查看代码"-这将打开一个VBE窗口
- 粘贴内容并关闭VBE窗口
如果你有任何顾虑,首先在试用工作表上试试。
如果保存工作簿,则宏将与工作簿一起保存。如果您使用的是2003以后的Excel版本,则必须保存文件为.xlsm而不是.xlsx
删除宏:
- 如上所述打开VBE窗口
- 清除代码
- 关闭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
必须启用宏才能运行