我需要格式化一些 Excel 单元格以仅允许输入货币(小数点)。一些填写表格的员工输入了冒号 (:) 而不是小数点,这导致总数不正确。是否可以格式化或限制单元格,以便在输入小数点 (.) 以外的任何符号时出现错误消息?感谢您的帮助。
答案1
虽然这不是最优雅的方法,但我建议您彻底测试一下。这似乎有效。根据需要针对有问题的输入列进行调整。现在将其设置为一个范围,而不是整个列,以便公式可以在该列中工作。
首先设置单元格格式,使其不会自动转换为某种格式。使用 Selection Change 事件将单元格格式设置为实际输入的格式。
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Set rng2check = Range("A1:A10") 'you can adjust this how you wish
If Not Intersect(ActiveCell, rng2check) Is Nothing Then ActiveCell.NumberFormat = "@"
Set rng2check = Nothing
End Sub
然后检查输入中的冒号并替换它们,将值转换为 Double 或 Currency 并将最终单元格格式重置为 General 或 Currency ,无论哪种方式适合您。
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next 'on an error leave events enabled
Application.EnableEvents = False
inputCheck = Target.Text
inputCheck = Replace(inputCheck, ":", ".")
inputCheck = CDbl(inputCheck)
'MsgBox (inputCheck)
Range(Target.Address).NumberFormat = "General"
Range(Target.Address) = inputCheck
Application.EnableEvents = True
End Sub
有人可能会指出更好的方法。首先将单元格格式更改为文本可能不是最佳解决方案,但它可以实现您想要的效果。当然,其他数据验证可能是一个好主意
我确信您可以扩展它来替换除冒号之外的其他字符。
答案2
您可以使用数据验证,指定问题单元格中唯一可接受的值可以来自预先指定的列表范围。您可以将此范围隐藏在任何您喜欢的位置。它可以包含您喜欢的任何值。在您的情况下,它可能是一个包含句点的单元格。
验证对话框将允许您在输入列表中未包含的值时指定错误消息。它还将为您提供一个漂亮的下拉菜单,以便用户可以选择适当的值。