请找到以下代码。我不确定我的代码在哪里出错了。 我的目的是检查D44单元格(下拉列表)中的值,并根据值锁定/解锁D45单元格。
D44中的值为NO,13 fracto,18 fracto,Any Other Fracto" 只有当D44单元格值设置为" Any Other Fracto"时,用户才能编辑单元格D45。
Sub TheSelectCase()
Select Case Range("D44").Value
Case "Any Other Fracto"
Range("D45").Locked = False
Range("D45").Activate
Case = "NO"
Range("D45").Locked = True
Range("D45").Clear
Case <> "NO" Or "Any Other Fracto"
Range("D45").Locked = True
End Select
End Sub
答案 0 :(得分:3)
除非下拉列表是ActiveX控件,否则您需要通过Worksheet_Change
事件处理程序执行此操作,而且,您只有两种情况:1)允许用户编辑的情况(“任何其他fracto“)和2)任何其他值,不允许用户编辑。
假设您使用的是验证列表,请在工作表的Worksheet_Change
事件中执行此操作:
Private Sub Worksheet_Change(ByVal Target As Range)
'Exit on any other cell
If Intersect(Target, Range("D44")) Is Nothing Then Exit Sub
Application.EnableEvents = False
Dim inputCell As Range
Set inputCell = Range("D45")
Select Case Trim(LCase(Target.Value))
Case "any other fracto"
inputCell.Locked = False
inputCell.Activate
Case Else
'This handles **ANY** other value in the dropdown
inputCell.Locked = True
InputCell.Clear
End Select
Application.EnableEvents = True
End Sub