このコードをワークシートの VBA モジュールに入れることができます。メッセージを表示し、値をクリアして、フォーマットを Accounting に戻します。
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