1

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
4

1 に答える 1

2

列 A:A セルのロックを解除し、シートを保護します。

コードでは、Me.Unprotectセルを変更する前とMe.Protectその後に使用します。

于 2013-07-18T12:44:03.703 に答える