我正在尝试制作一个 excel 文件,强制用户在文件中输入数据,不要让单元格留空。但我只想在用户更改某个单元格时强制用户输入数据。
这是必须输入支持信息才能输入分数的计分表。
例如,我选择单元格D12
,其中可能已经有数据:
- 如果我不尝试更改单元格,则什么也不会发生,并且我可以选择文件中的任何其他单元格。
- 如果我尝试更改单元格
D12
,则必须在单元格中输入数据E12
。如果我没有输入数据E12
,则无法更改D12
。
答案1
对于这个特定的任务,你可以做类似的事情:
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Address = "$E$12" Then
ActiveSheet.Unprotect
Select Case Range("E12").Value
Case ""
Range("D12").Locked = True
Case Else
Range("D12").Locked = False
End Select
ActiveSheet.Protect
End If
End Sub
在工作表的代码中。如果您使用受保护的工作表,这将根据对 E12 的操作锁定/解锁 D12。
如果您不喜欢这种工作方式,或者不想保护工作表,您可以尝试类似但完全不同的方法。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$D$12" Then
If Range("E12").Value = "" And Range("D12").Value <> "" Then
Range("D12") = ""
MsgBox "Please enter E12 before D12"
End If
End If
End Sub
这样,如果您在 E12 为空时在 D12 中输入了某些内容,它将被删除,并且会出现一个消息框告诉您原因。这
If Target.Address = "$D$12" Then
是可选的,如果您总是想检查,可以完全删除,以防他们编辑 D12 然后删除 E12 中的值。或者您可以将其更改为
If Target.Address = "$D$12" Or Target.Address = "$E$12" Then
对于这种情况。