根据另一个单元格中的数字锁定多个单元格

时间:2014-05-08 21:46:45

标签: excel excel-vba debugging vba

根据特定单元格中的数字,例如B1,​​B3中锁定单元格的数量应该等于该数字。例如,如果B1为20,则应锁定B3:B23。同样,如果B1为1000,则锁定单元格应为B3:B1003。下面的代码已启动,但不适用于range命令。代码有什么问题? (我正在使用excel 2010)

Private Sub Worksheet_Change(ByVal Target As Range)
Dim tValue As Integer
If Target = Range("B1") Then
    If Not IsNumeric(Target.Value) Then
        MsgBox "Not a valid value"
    Else
        tValue = Target.Value + 2
        Range("B3" & tValue, "B1003").Locked = False
        Range("B3", "B" & tValue).Locked = True
    End If
End If
End Sub

谢谢

1 个答案:

答案 0 :(得分:0)

代码正确锁定单元格。但是,您需要保护锁定的工作表才能生效。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim tValue As Integer
If Target = Range("B1") Then
    If Not IsNumeric(Target.Value) Then
        MsgBox "Not a valid value"
    Else
        ActiveSheet.Unprotect Password:="secret"
        tValue = Target.Value + 2
        Range("B3" & tValue, "B1003").Locked = False
        Range("B3", "B" & tValue).Locked = True
        ActiveSheet.Protect Password:="secret"
    End If
End If
End Sub

如果您不想设置密码,只需从Unprotect和Protect语句中删除该参数即可。