我有四列(A,B,C,D)。我的要求是,在每一行中,只有一个单元格应接受数据,其余单元格不应接受数据(即其余三个单元格应处于锁定模式)。
我该怎么做?
答案 0 :(得分:7)
这是一种做你要求的方法。 (或者至少我认为你在问什么。)
首先,解锁工作表中的所有单元格。默认情况下,它们都处于锁定状态(虽然这实际上保护了工作表后才会生效)所以你需要先解锁它们,否则一旦你保护它就无法在任何地方输入任何数据。片。您可以手动执行此操作(在2003年:选择所有单元格,格式>单元格>保护>取消选中“已锁定”)或使用VBA,如下所示:
Sub UnlockAll()
With Sheet1 ' Or whatever sheet you're working on
.Unprotect
.Cells.Locked = False
.Protect
End With
End Sub
以上只需要执行一次。
然后,您必须使用Worksheet_Change
事件动态锁定和解锁单元格。在工作表的模块中,编写以下代码:
Private Sub Worksheet_Change(ByVal Target As Range)
Me.Unprotect
If Not IsEmpty(Target) Then
'Data was added in target cell. Lock its neighbours.
Me.Cells(Target.Row, 1).Resize(, 4).Locked = True
Target.Locked = False
Else
'Data was erased from target cell. Release its neighbours.
Me.Cells(Target.Row, 1).Resize(, 4).Locked = False
End If
Me.Protect
End Sub
假设您在单元格B2中写入数据;这将锁定单元格B1,B3和B4,以便不能输入数据。如果您以后决定清除B2,那么这将解锁B1,B3和B4。