Excel VBA – 安全なタイムスタンプ
Excel シートに安全なタイムスタンプを作成できるようにしたいと考えています。私が使用している VBA は、現在のユーザーのユーザー名、時間、およびユーザーが列 A に情報を入力した日付を自動的に追加します。したがって、ユーザーがセル A1 に何かを入力すると、B1 にユーザー名が自動的に入力され、C1 に入力されます。時刻と日付とともに。問題は、情報が自動的に入力された後にユーザーが情報を変更できるため、この方法は安全ではないことです。この VBA にコードを追加して、情報が入力された後に 3 つのセルすべてをロックしたいと考えています。
保護シート機能を使用して、ユーザーが「ロックされていないセルを選択する」ことだけを許可することを計画していたので、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