【发布时间】:2017-10-01 00:05:17
【问题描述】:
我目前正在使用两段 vba 代码。我正在尝试将它们结合在一起以实现以下目的。
第一个代码
我的代码允许用户双击一个单元格,然后为该单元格添加时间戳,然后锁定相关单元格。哪个工作正常。但是,在某些情况下,用户必须输入 NA,然后运行不同的代码(第二个代码)。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Application.EnableEvents = False
With Target
If .Column = 4 Then
Select Case .Row
Case 20, 24, 25, 27, 28, 30, 31, 32, 33, 34, 35, 37, 38, 40, 42, 43, 44, 54, 55, 56, 58, 59, 61, 62, 63, 64, 65
Sheets("Sheet3").Protect Password:="Test", userinterfaceonly:=True
.Value2 = "Prepared By" & " " & Environ("Username")
.Value2 = .Value2 & " " & Format(Now, "yyyy-MM-dd hh:mm:ss")
.Locked = True
End Select
End If
End With
End Sub
用户键入不适用时的第二个代码
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
'// Check if the target row number is in our array:
Select Case Target.Row
Case 20, 24, 25, 27, 28, 30, 31, 32, 33, 34, 35, 37, 38, 40, 42, 43, 44, 54, 55, 56, 58, 59, 61, 62, 63, 64, 65
' Do Something
If CStr(Target.Value) Like "*NA*" Then
Target.Value = "Not applicable" & " " & Environ("Username") & " " & Format(Now, "yyyy-MM-dd hh:mm:ss")
End If
Case Else
' Do nothing
Exit Sub
End Select
End Sub
需要克服的问题
一旦用户双击单元格并锁定,以后就无法将该单元格更改为 NA。一旦单元格被锁定,NA 应该是用户应该能够键入的唯一值。
问题
有没有一种方法可以让用户仅在单元格被锁定后才输入 NA。因此用户只有两个选项可以输入 na 或 Double click
【问题讨论】: