excel - 如何根据单元格值锁定(只读)特定范围?
问题描述
我正在开发一个计划监控工具。我需要根据单元格值锁定一系列单元格。
我想当“Q”列中的值为“已确认”时,从 M 列到 Q 列的同一行上的单元格被锁定。
Sub planning_blocker()
Dim last_row As Integer
' Compute the last row
last_row = Worksheets("Planning").Cells(Rows.Count, 1).End(xlUp).Row
Debug.Print last_row
For i = 3 To last_row
If Worksheets("Planning").Cells(i, 17).Value = "" Then
Sheets("Planning").Range("M" & i & ":" & "P" & i).Locked = False
Else
Sheets("Planning").Range("M" & i & ":" & "P" & i).Locked = True
End If
Next i
Sheets("Planning").Protect Password:="User"
End Sub
这部分是因为:
- 它锁定检测到“已确认”的整行,而不仅仅是范围
- 它只考虑检测到“已确认”的第一行而不考虑其余行(如果多行标记为“已确认”,则仅阻止第一行)。
解决方案
我测试了你的代码,它适用于我(Excel2016)。如果当前行的第 17 列 (col Q) 不为空,则范围 (M:P) 被锁定。不要没有什么可能是你的问题......
推荐阅读
- jquery - Moment.js:时间不基于计算机时间
- r - R Markdown 2列应该具有相同的名称
- android - 如何获取firebase中元素的关键?
- javascript - 两个 div 问题之间的滚动延迟
- tensorflow - 在 jupyter notebook 中运行训练有素的 kaggle 模型
- flutter - 如何同时使用 Firebase Auth 和 Facebook 登录?
- r - 比较数据框中的所有行并有条件地应用函数
- java - 如何在 JTextField 中排列二维数组的值
- javascript - 如何在此正则表达式中检查所有特殊字符的正斜杠?
- python - 值存储在另一个字典中时的最小值元组