
我想限制使用者在 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 之間的整數並取消選取“忽略空白”