我有一系列需要採用會計格式的單元格。我遇到的問題是,當用戶嘗試輸入日期時,它會更改單元格的格式以及計算。當用戶輸入日期時,我想要彈出消息框錯誤並清除無效數據。防止用戶輸入日期
我已經將數據驗證設置爲十進制,但是當我嘗試通過輸入日期(1/2,1/2/11或1-2-11)進行測試時,excel會將單元格的數字格式更改爲小數或日期和驗證錯誤事件不會發生。
另外,有沒有辦法從我鎖定一系列單元格的數字格式,以便excel將停止轉換基於用戶輸入的單元格的格式?
我有一系列需要採用會計格式的單元格。我遇到的問題是,當用戶嘗試輸入日期時,它會更改單元格的格式以及計算。當用戶輸入日期時,我想要彈出消息框錯誤並清除無效數據。防止用戶輸入日期
我已經將數據驗證設置爲十進制,但是當我嘗試通過輸入日期(1/2,1/2/11或1-2-11)進行測試時,excel會將單元格的數字格式更改爲小數或日期和驗證錯誤事件不會發生。
另外,有沒有辦法從我鎖定一系列單元格的數字格式,以便excel將停止轉換基於用戶輸入的單元格的格式?
你可以把這個代碼在工作表的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
您可以在Excel
使用數據驗證工具使用此,您可以強制用戶在一個單元格內輸入某種類型的數據
我已經數據驗證設置爲十進制數,但是當我嘗試通過輸入一個日期(1/2測試它,1/2/11或1-2-11)excel將單元格的數字格式更改爲分數或日期,並且不會出現驗證錯誤。 – Cate
謝謝!正是我在找什麼。我在測試這個時遇到了一些問題。當我輸入數字時,例如1,1.1,1.12,這個宏在大約一半的時間內完美地工作。但其他時間告訴我,我在輸入十進制數字時輸入了一個日期。 – Cate