2013-07-09 133 views
0

我有一系列需要採用會計格式的單元格。我遇到的問題是,當用戶嘗試輸入日期時,它會更改單元格的格式以及計算。當用戶輸入日期時,我想要彈出消息框錯誤並清除無效數據。防止用戶輸入日期

我已經將數據驗證設置爲十進制,但是當我嘗試通過輸入日期(1/2,1/2/11或1-2-11)進行測試時,excel會將單元格的數字格式更改爲小數或日期和驗證錯誤事件不會發生。

另外,有沒有辦法從我鎖定一系列單元格的數字格式,以便excel將停止轉換基於用戶輸入的單元格的格式?

回答

0

你可以把這個代碼在工作表的VBA模塊。它顯示了該消息,清除值,並設置格式返回給會計:

Private Sub Worksheet_Change(ByVal Target As Range) 
Dim AccountingRange As Excel.Range 
Dim cell As Excel.Range 

Set AccountingRange = Me.Range("B2:B20") 
If Intersect(Target, AccountingRange) Is Nothing Then 
    Exit Sub 
End If 

Application.EnableEvents = False 
For Each cell In Intersect(Target, AccountingRange) 
    If IsDate(cell.Text) Then 
     With cell 
      MsgBox "You entered a date in " & .Address & "." & vbCrLf & "Please don't do that!" 
      cell.ClearContents 
      .NumberFormat = "_($* #,##0.00_);_($* (#,##0.00);_($* ""-""??_);_(@_)" 
     End With 
    End If 
Next cell 
Application.EnableEvents = True 
End Sub 
+0

謝謝!正是我在找什麼。我在測試這個時遇到了一些問題。當我輸入數字時,例如1,1.1,1.12,這個宏在大約一半的時間內完美地工作。但其他時間告訴我,我在輸入十進制數字時輸入了一個日期。 – Cate

1

您可以在Excel

Select the validation

使用數據驗證工具使用此,您可以強制用戶在一個單元格內輸入某種類型的數據

+0

我已經數據驗證設置爲十進制數,但是當我嘗試通過輸入一個日期(1/2測試它,1/2/11或1-2-11)excel將單元格的數字格式更改爲分數或日期,並且不會出現驗證錯誤。 – Cate