1

Excel VBA – 安全时间戳

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

我计划使用保护表功能,只允许用户“选择未锁定的单元格”所以如果 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
4

1 回答 1

2

解锁 A 列:A 单元格并保护工作表。

在您的代码中,Me.Unprotect在更改单元格之前和Me.Protect之后使用。

于 2013-07-18T12:44:03.703 回答