【发布时间】:2015-03-27 14:37:12
【问题描述】:
我在用户表单和大量 VBA 方面有相当大的 Excel。我在部分锁定一个工作表并同时允许 VBA 跟踪更改时遇到问题。 目前我使用下面的代码跟踪更改 - 此代码位于 Microsoft Excel Objects >> Sheet1 下:
Option Explicit
Public preValue As Variant
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
Target.ClearComments
Target.AddComment.Text Text:="Previous Value was " & preValue & Chr(10) `& "Revised " & Format(Date, "mm-dd-yyyy") & Chr(10) & "By " & Environ`("UserName")
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target = "" Then
preValue = "a blank"
Else: preValue = Target.Value
End If
End Sub
另一段代码位于 Forms 文件夹中(我在其中创建了用户表单以获取用户的一些详细信息),如下所示:
Dim myPassword As String
myPassword = "123"
Set wsUK = Worksheets("Sheet1")
wsUK.Unprotect Password:=myPassword
' here there is a lot of code that throws data into Sheet1
wsUK.Protect Password:=myPassword
问题是用户表单完成后 Sheet1 受到部分保护,但我仍然允许用户更改 H 和 P 列中的数据。当我尝试这样做时,我得到运行时错误“1004”单元格或图表您尝试更改的内容受到保护,因此是只读的。
【问题讨论】:
标签: excel vba tracking userform