![如何防止用户在 Excel 表中输入空值?](https://linux22.com/image/1260019/%E5%A6%82%E4%BD%95%E9%98%B2%E6%AD%A2%E7%94%A8%E6%88%B7%E5%9C%A8%20Excel%20%E8%A1%A8%E4%B8%AD%E8%BE%93%E5%85%A5%E7%A9%BA%E5%80%BC%EF%BC%9F.png)
我想限制用户在 Excel 2007 表中只能输入 0 或 1。
我使用数据 > 数据验证对话框来执行此操作,但我发现它并不能阻止他们输入空白。
我希望当他们输入空白时会出现提示,就像他们输入任何其他非 0 或 1 的非空白数据时出现的提示一样。
我打算用 0 填充表格前应用验证,因此不应该存在错误数据的问题。
此外,我愿意使用 VBA 来解决这个问题。
答案1
此更改事件过程将查看任何经过验证的单元格并显示验证的错误消息。它的工作方式与验证不同,因为它不会强制“重试”。此外,如果删除了单元格,它会在其中插入一个“1”。您可以将旧值放入其中,但这需要更多工作,而且我通常会尽量避免这样做。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim sForm As String
On Error Resume Next
sForm = Target.Validation.Formula1
On Error GoTo 0
If Len(sForm) > 0 Then 'has validation
If IsEmpty(Target.Value) Then 'cell was deleted
MsgBox Target.Validation.ErrorMessage, vbOKOnly, Target.Validation.ErrorTitle
Application.EnableEvents = False
Target.Value = 1
Application.EnableEvents = True
End If
End If
End Sub
答案2
数据验证设置中应该有一个“忽略空白”选项。如果您禁用(取消选中)该选项,是否不能达到您的预期效果?
将 DV 设置为 0 到 1 之间的整数,并取消选中“忽略空白”