在范围内的特定单元格中输入的条件值,将解锁另一个范围内的另一个特定单元格(VBA,范围偏移)

我对VBA还是很陌生,但是我会尽力赶上,阅读所有内容,并尽我所能进行测试。经过数天的尝试,我根本无法弄清楚,请寻求帮助!

我特别需要的是: 如果将值9(只有9)输入到单元格U13中,则单元格AZ13将被解锁(没有其他输入的值将解锁AZ13)。或者,如果在单元格U14中输入了值9,则将单元格AZ14解锁,依此类推,将工作表向下降至大约U300 / AZ300。

我已使用以下代码在第一行U13 / AZ13上成功达到了预期的结果。

Private Sub Worksheet_Change(ByVal Target As Range)
    activeSheet.Unprotect "password"
    If Range("U13").Value <> 9 Then
        Range("AZ13").Locked = True
    ElseIf Range("U13").Value = 9 Then
        Range("AZ13").Locked = False
    End If
    activeSheet.Protect "password"
End Sub

我一生无法上班的部分正在移至下一行。我已经尝试了上述代码和大约100个其他代码的几种变体,包括:

Private Sub Worksheet_Change(ByVal Target As Range)
    activeSheet.Unprotect "password"
    If Range("U13:U200").Value <> 9 Then
        Range("U13:U200").Offset(0,31).Select.Locked = True
    ElseIf Range("U13:U200").Value = 9 Then
        Range("U13:U200").Offset(0,31).Select.Locked = False
    End If
    activeSheet.Protect "password"
End Sub

我已经尝试使用“ .select.locked”以及“ .locked”进行上述操作。 我只是在学习使用范围偏移量,但是确实尝试修改以仅将1个像元移到(0,1)上,以防万一我计算了错误的像元数,但这也不起作用。这个特殊的代码给了我一个运行时错误(类型不匹配)。调试指向此行:

If Range("U13:U200").Value <> 9 Then

非常感谢您提供正确方向的帮助!

ccdelan 回答:在范围内的特定单元格中输入的条件值,将解锁另一个范围内的另一个特定单元格(VBA,范围偏移)

如上所述,您需要循环。

类似这样的东西:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim c As Range
    ActiveSheet.Unprotect "password"
    For Each c In Me.Range("U13:U200").Cells
        c.Offset(0,31).Locked = c.Value <> 9
    Next c
    ActiveSheet.Protect "password"
End Sub
本文链接:https://www.f2er.com/3107479.html

大家都在问