我有一系列需要采用会计格式的单元格。我遇到的问题是,当用户尝试输入日期时,它会将单元格的格式更改为日期并弄乱计算。当用户尝试输入日期时,我希望弹出消息框错误并清除无效数据。
我已经将数据验证设置为十进制,但是当我尝试通过输入日期(1/2、1/2/11 或 1-2-11)对其进行测试时,excel 会将单元格的数字格式更改为分数或日期,并且验证错误事件不会发生。
或者,我有没有办法锁定一系列单元格的数字格式,以便 excel 将停止根据用户输入转换单元格的格式?
我有一系列需要采用会计格式的单元格。我遇到的问题是,当用户尝试输入日期时,它会将单元格的格式更改为日期并弄乱计算。当用户尝试输入日期时,我希望弹出消息框错误并清除无效数据。
我已经将数据验证设置为十进制,但是当我尝试通过输入日期(1/2、1/2/11 或 1-2-11)对其进行测试时,excel 会将单元格的数字格式更改为分数或日期,并且验证错误事件不会发生。
或者,我有没有办法锁定一系列单元格的数字格式,以便 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