gpt4 book ai didi

vba - Excel - 根据值锁定单元格范围

转载 作者:行者123 更新时间:2023-12-02 09:52:27 25 4
gpt4 key购买 nike

是否可以根据一行数据中下拉列表的输入锁定特定范围的单元格?

例如,我的电子表格的每一行代表一名患者,第一个单元格提出一个问题,需要回答"is"或“否”(通过下拉菜单选择/输入)。

编辑

“是/否”单元格实际上是两个单元格(G13 和 H13)的合并。我已经更新了我的示例以反射(reflect)这一点。

编辑结束

如果用户选择“否”,那么我希望锁定问题范围的其余部分 (G13-H13:AB13),因为无需在此处输入数据。但是,如果用户选择"is",则其余单元格仍可用于输入数据。

每个范围内的所有单元格仅通过下拉菜单输入数据。

这是我希望实现的目标:

If "No"
Then lock range G13-H13:AB13
Else If "Yes"
Then do nothing

i.e.

G13-H13 I13-J13 K13-L13 .... .... AB13
| NO | ---- | ---- | ---- | ---- | ---- | (Locked Cells)

OR

G13-H13 I13-J13 K13-L13 .... .... AB13
| YES | | | | | | (Unlocked Cells)

我想再次强调,所有数据都是通过下拉菜单输入的,不需要手动输入任何内容;我希望如果G13-H13 =“No”,则具有下拉列表的范围内的其余单元格将被阻止或锁定,无法从各自的下拉列表中选择更多信息。

请注意,G13-H13 中的值可以是"is"或“否”。

这可以使用 VBA 实现吗?如果可以,如何实现?

非常感谢。

最佳答案

编辑:无需 VBA 即可完成此操作。我基于这里的另一个答案:https://stackoverflow.com/a/11954076/138938

G 列有"is"或“否”下拉列表。

在单元格 H13 中,设置数据验证,如下所示:

  1. 数据 --> 数据验证
  2. 允许下拉列表中选择列表
  3. 来源字段中输入以下公式:=IF($G13="Yes", MyList, FALSE)
  4. 复制单元格 H13 并将验证内容粘贴到单元格 I13:AB13。
  5. 将公式中的 MyList 替换为您希望允许用户从每列中进行选择的列表。请注意,您需要将患者的答案设置为"is"才能设置验证。设置完成后,您可以删除它或将其设置为否。
  6. 为第 13 行设置验证后,请将验证复制并粘贴到需要它的所有行。
<小时/>

如果您想使用 VBA,请使用以下内容,并使用 worksheet_change 事件或某些其他机制来触发 LockOrUnlockPatientCells。我不喜欢使用 worksheet_change,但在这种情况下可能有意义。

为了锁定单元格,您需要锁定它们,然后保护工作表。下面的代码就是这样做的。您需要将正在处理的患者的行传递给它。

Sub LockOrUnlockPatientCells(PatientRow As Long)
Dim ws As Worksheet
Dim YesOrNo As String

Set ws = ActiveSheet
YesOrNo = ws.Range("g" & PatientRow).Value

' unprotect the sheet so that we can modify locked settings
ws.Unprotect
ws.Range("a:g").Cells.Locked = False

' lock row
Range("h" & PatientRow & ":AB" & PatientRow).Cells.Locked = True

' unlock the row depending on answer
If YesOrNo = "Yes" Then
Range("h" & PatientRow & ":AB" & PatientRow).Cells.Locked = False
End If

' protect the sheet again to activate the locked cells
ws.Protect

End Sub

您可以使用以下方法测试功能,手动调整患者行的值。一旦您让它按照您想要的方式工作,就可以从用户的输入中获取该行。

Sub testLockedCells()
Dim AnswerRow As Long

AnswerRow = 9

LockOrUnlockPatientCells AnswerRow
End Sub

关于vba - Excel - 根据值锁定单元格范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11901686/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com