Excel - 输入值时:错误而不是锁定的单元格
Excel - When enter a value: error instead of locked cell
当您输入一个值时,单元格应该被锁定。只有黄色单元格应该能够锁定。但总是当我在单元格中输入内容时,我得到这个错误代码:
代码中的错误:
完整代码:
Private Sub Worksheet_Change(ByVal Target As Range)
Sheet1.Unprotect "1234"
If VBA.IsEmpty(Target.Value) Then
Target.Locked = False
Else
Target.Locked = True
End If
Sheet1.Protect "1234"
End Sub
table:
我怀疑您收到错误的原因是您没有名为 Sheet1 的 sheet。您可能在某个时候重命名或删除了第一个 sheet。
要从您可以使用 Range.Worksheet
的范围内动态调用作品sheet。这将为您提供您正在使用的范围的工作sheet。
以下是在您的场景中使用它的方法:
首先需要一些准备
- Select 所有单元格都在工作sheet
- 右键单击 --> 设置单元格格式
- 保护选项卡
- 取消选中锁定。 (这意味着 sheet 上没有单元格被锁定)
编辑单元格时,如果它是黄色的并且其中有值,它将被锁定。那么该作品sheet上的所有单元格都将被锁定,如果它们被设置为锁定的话。
Private Sub Worksheet_Change(ByVal Target As Range)
' Only deal with one Cell.
If Target.Columns.Count = 1 And Target.Rows.Count = 1 Then
'Target background is Yellow (You may have to modify the code to the RGB value of your yellow) and value is Empty
If Target.Interior.Color = RGB(255, 255, 102) And Target.Value <> "" Then
Target.Worksheet.Unprotect "1234"
Target.Locked = True
Target.Worksheet.Protect Password:="1234", Contents:=True
End If
End If
End Sub
当您输入一个值时,单元格应该被锁定。只有黄色单元格应该能够锁定。但总是当我在单元格中输入内容时,我得到这个错误代码:
代码中的错误:
完整代码:
Private Sub Worksheet_Change(ByVal Target As Range)
Sheet1.Unprotect "1234"
If VBA.IsEmpty(Target.Value) Then
Target.Locked = False
Else
Target.Locked = True
End If
Sheet1.Protect "1234"
End Sub
table:
我怀疑您收到错误的原因是您没有名为 Sheet1 的 sheet。您可能在某个时候重命名或删除了第一个 sheet。
要从您可以使用 Range.Worksheet
的范围内动态调用作品sheet。这将为您提供您正在使用的范围的工作sheet。
以下是在您的场景中使用它的方法:
首先需要一些准备
- Select 所有单元格都在工作sheet
- 右键单击 --> 设置单元格格式
- 保护选项卡
- 取消选中锁定。 (这意味着 sheet 上没有单元格被锁定)
编辑单元格时,如果它是黄色的并且其中有值,它将被锁定。那么该作品sheet上的所有单元格都将被锁定,如果它们被设置为锁定的话。
Private Sub Worksheet_Change(ByVal Target As Range)
' Only deal with one Cell.
If Target.Columns.Count = 1 And Target.Rows.Count = 1 Then
'Target background is Yellow (You may have to modify the code to the RGB value of your yellow) and value is Empty
If Target.Interior.Color = RGB(255, 255, 102) And Target.Value <> "" Then
Target.Worksheet.Unprotect "1234"
Target.Locked = True
Target.Worksheet.Protect Password:="1234", Contents:=True
End If
End If
End Sub