【发布时间】:2018-06-12 02:42:12
【问题描述】:
我希望根据一行数据中下拉菜单的输入来锁定特定范围的单元格?
例如,在每一行中,第三个单元格提出一个问题 - 通过下拉列表给出“是”或“否”。如果用户选择“否”,则必须锁定剩余的三个单元格。但是,如果用户选择“是”,则剩余的单元格仍可用于输入数据。
A B C D E F
| S.No | ID | Response | TIme | Value | Expense |
| 1 | 12345 | NO | ---- | ---- | ---- | (Locked Cells)
| 2 | 67y45 | YES | 44 | 1.68 | 1500 | (UnLocked Cells)
| 3 | 12456 | NO | ---- | ---- | ---- | (Locked Cells)
就像 D2 到 F2 必须被锁定,而 D3 到 F3 应该可以进入,而 D4 到 F4 又被锁定等等,...
我尝试了以下代码,但据我观察,它没有锁定单元格或没有执行任何操作
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("C2:C160") = "YES" Then
Range("D2:D160").Locked = False
ElseIf Range("C2:C160") = "NO" Then
Range("D2:D160").Locked = True
Range("E2:E160").Locked = True
Range("F2:F160").Locked = True
End If
End Sub
以160为最高范围。
任何帮助都会非常有帮助,谢谢。
【问题讨论】:
-
如果您选择范围,例如
Range("C2:C160") = "yes",则VBA 会扫描整个范围的数据,而不是如果范围内的任何单元格包含关键字yes。这也是你的代码不起作用的原因 -
@Rawrplus :哦,知道了,你能帮我看看吗..我不知道如何继续前进,谢谢..
-
很高兴,但是 Vityata;s 的代码应该可以工作,而且它对 m 来说似乎是一个很好的实现,所以我认为它并没有太大变化(除了不同的实现方法)
-
@Rawrplus Vitayata 确实帮了很多忙,但我无法让代码运行..它仍然允许输入值..任何替代方案都会很有帮助