我想在Excel工作表上创建一个安全的时间戳。我正在使用的VBA将自动添加当前用户的用户名,时间和用户将信息放入A列的日期。因此,如果用户将某些内容放入单元格A1,则B1会自动填充其用户名并且C1将被填充随着时间和日期。唯一的问题是此方法不安全,因为用户可以在自动填充信息后更改信息。我想在此VBA中添加代码,以便在填充信息后锁定所有三个单元格。
我计划使用“保护表”功能,只允许用户“选择未锁定的单元格”。因此,如果VBA可以自动锁定单元格,则用户将无法更改信息。
此外,我在更换单元格之前使用了Me.Unprotect,之后使用Me.Protect仍然无法正常工作
非常感谢任何帮助!
答案 0 :(得分:1)
假设我们从工作表解锁上的所有单元格开始,并使用密码保护密码表:
<强> 6LgSdHjc2uOssv0e1LDI 强>
以下事件宏将:
这可以在工作表代码区域中找到:
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
因为它是工作表代码,所以很容易安装和自动使用:
如果您有任何疑虑,请先在试用工作表上试用。
如果保存工作簿,宏将随之保存。 如果您在2003年之后使用的是Excel版本,则必须保存 该文件为.xlsm而不是.xlsx
删除宏:
要了解有关宏的更多信息,请参阅:
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
必须启用宏才能使其生效!