阻止用户输入日期

时间:2013-07-09 17:26:04

标签: excel excel-vba excel-2010 vba

我有一系列需要采用会计格式的单元格。我遇到的问题是,当用户尝试输入日期时,它会将单元格的格式更改为日期并且会影响计算。当用户尝试输入日期时,我想要弹出消息框错误并清除无效数据。

我已经将数据验证设置为十进制,但是当我尝试通过输入日期(1 / 2,1 / 2,1 / 11或1-2-11)来测试它时,将单元格的数字格式更改为分数或日期和验证错误事件不会发生。

或者,有没有办法让我锁定一系列单元格的数字格式,以便excel将根据用户输入停止转换单元格的格式?

2 个答案:

答案 0 :(得分:1)

您可以使用Excel中的数据验证工具

Select the validation

使用此功能可以强制用户在单元格中输入特定类型的数据

答案 1 :(得分:0)

您可以将此代码放在工作表的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