Excel VBA:如何在Excel中锁定(设为只读)特定范围

问题描述 投票:0回答:1

我正在使用计划监视工具,因此我需要根据条件(更准确地说:基于像元值)锁定一定范围的像元。

这里是示例:我想获得的是,当列“ Q”中的值是“ Confirmed”时,则锁定从列M到Q的同一行中的单元格。

enter image description here

这是我现在正在运行的代码:

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

之所以起作用,部分原因是:-它锁定了检测到“已确认”的整个行,而不仅仅是范围-它仅考虑检测到“已确认”的第一行,而不考虑其余的行(如果我有多行标记为“已确认”的行,则仅阻止第一行)。

我是VBA的初学者,所以我真的不知道错误在哪里。

感谢您的帮助!

excel vba locking cell
1个回答
0
投票

我测试了您的代码,它对我有用(Excel2016)。如果当前行的第17列(列Q)不为空,则范围(M:P)被锁定。不要不,这可能是您的问题...

© www.soinside.com 2019 - 2024. All rights reserved.