excel - 基于相邻单元格值可编辑/不可编辑的行中的单元格范围
问题描述
我需要什么:
- 当文本 Yes 输入到例如 A2 中时,我希望 B2:E2 变得无法编辑,但 A3:E7 范围仍然可以编辑。
- 当文本是输入例如 A3 时,我希望 B3:E3 变为不可编辑,除了 B2:E2 (上面的行)无法编辑。
- 上述功能将在工作表上持续大约 100 行。
- 当从单元格(例如 A2)中删除文本 Yes 时,只有 B2:E2 再次变为可编辑。当将“是”输入回单元格时,它们将无法再次编辑。
- 如果 A 列中的单元格为空白,则该行对应的 B:E 列是可编辑的。
所附图像中的当前状态:单元格 A2:E7 已解锁,工作表中的所有其他单元格保持锁定状态 工作表的其余部分在没有密码的情况下受到保护/仅选择未锁定的单元格(但如果需要,可以包含密码)
解决方案
另一种解决方案。工作表中的代码 - 更改事件:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then ' column A changed
ThisRow = Target.Row 'get row number
If Target.Value = "Yes" Then
ThisWorkbook.ActiveSheet.Unprotect 'unprotect sheet
Range("B" & ThisRow).Locked = True
Range("C" & ThisRow).Locked = True
Range("D" & ThisRow).Locked = True
Range("E" & ThisRow).Locked = True
ThisWorkbook.ActiveSheet.Protect 'protect sheeet
Else
ThisWorkbook.ActiveSheet.Unprotect
Range("B" & ThisRow).Locked = False
Range("C" & ThisRow).Locked = False
Range("D" & ThisRow).Locked = False
Range("E" & ThisRow).Locked = False
ThisWorkbook.ActiveSheet.Protect
End If
End If
End Sub
推荐阅读
- .net - 带有实体框架的 SQLite。System.Data.SQLite 数据库文件未显示在数据源中
- c - 具有不同结构的分段错误
- java - 如何在java中获取所需日期的日期对象?
- r - R:通过索引删除数据框中的行
- r - 在 dplyr::mutate() 中编写一个具有默认列名输入的函数
- javascript - 如何使用 innerHTML 将结果打印到 div 标签中
- database - 我可以通过数据库链接编译大型存储过程吗?
- javascript - puppeteer 如何从窗口范围获取变量
- qgis - QGIS - 无法更改 shapefile 的 CRS
- recursion - 递归函数中的多项选择