【发布时间】:2019-10-16 13:42:30
【问题描述】:
我正在开发一种计划监控工具。我需要根据单元格值锁定一系列单元格。
我希望当“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
这部分是因为:
- 它锁定检测到“已确认”的整个行,而不仅仅是范围
- 它只考虑检测到“已确认”的第一行,而不考虑其余行(如果多行标记为“已确认”,则仅阻止第一行)。
【问题讨论】: