VBA Excel 2003 在单击时保护单元格



我有一个电子表格,上面有一列(比如A列)。 这个想法是这个列是由具有各种分数的用户填充的。 一旦用户对 A 列中的答案感到满意,我希望他们确认答案是否正确(理想情况下通过单击按钮)。 单击该按钮后,我想使用 VBA 来保护 A 列不被再次编辑。 我宁愿不使用保护工作表选项,因为电子表格中还有其他数据,我需要将某些单元格锁定但可编辑(它们使用数据验证列表)。

我确实找到了这一部分 VBA,但这是基于工作表更改 - 如果我能以某种方式使用它,但只有在用户确认数据已设置后才能激活它,那将是理想的:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)    
    If Intersect(Target, Range("A2:A14")) Is Nothing Then Exit Sub
    Application.EnableEvents = False
    MsgBox "Hey, leave me alone!", 48, "Sorry, I'm protected."
    Application.Undo
    Application.EnableEvents = True
End Sub

如果您发布的内容符合您的需求,那么:

在模块中,如下所示:

Public active As Boolean
Sub Button1_Click()
   active = True
End Sub

在您的电子表格代码中:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
    If active Then
        If Intersect(Target, Range("A2:A14")) Is Nothing Then Exit Sub
        Application.EnableEvents = False
        MsgBox "Hey, leave me alone!", 48, "Sorry, I'm protected."
        Application.Undo
        Application.EnableEvents = True
    End If
End Sub
一个

可能更好的解决方案是在工作表中指定一个按钮填充的单元格,因此代码实际上是这样的:

If Range("A1") = "Locked" then
    ....

最新更新