Excel VBA - 安全时间戳
我希望能够在Excel工作表上创建安全的时间戳。我正在使用的VBA将自动添加当前用户的用户名,时间和用户将信息放入A列的日期。因此,如果用户将某些内容放入单元格A1,则B1会自动填充其用户名并且C1将被填充随着时间和日期。问题是此方法不安全,因为用户可以在自动填充信息后更改信息。我想向此VBA添加代码,以便在填充信息后锁定所有三个单元格。
我计划使用Protect Sheet功能,只允许用户“选择未锁定的单元格”。因此,如果VBA可以自动锁定单元格,那么用户将无法更改信息。
任何想法,建议或帮助将不胜感激!谢谢!
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim rCell As Range
Dim rChange As Range
On Error GoTo ErrHandler
Set rChange = Intersect(Target, Range("A:A"))
If Not rChange Is Nothing Then
Application.EnableEvents = False
For Each rCell In rChange
If rCell > "" Then
rCell.Offset(0, 1).Value = UserName()
rCell.Offset(0, 2).Value = Date & " " & Time()
Else
rCell.Offset(0, 1).Clear
End If
Next
End If
ExitHandler:
Set rCell = Nothing
Set rChange = Nothing
Application.EnableEvents = True
Exit Sub
ErrHandler:
MsgBox Err.Description
Resume ExitHandler
End Sub
Public Function UserName()
UserName = Environ$("UserName")
End Function
答案 0 :(得分:2)
解锁A列:细胞和保护纸。
在您的代码中,在更改单元格之前使用Me.Unprotect
,之后使用Me.Protect
。