限制 Excel 电子表格单元格中允许的符号

限制 Excel 电子表格单元格中允许的符号

我需要格式化一些 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

您可以使用数据验证,指定问题单元格中唯一可接受的值可以来自预先指定的列表范围。您可以将此范围隐藏在任何您喜欢的位置。它可以包含您喜欢的任何值。在您的情况下,它可能是一个包含句点的单元格。

验证对话框将允许您在输入列表中未包含的值时指定错误消息。它还将为您提供一个漂亮的下拉菜单,以便用户可以选择适当的值。

相关内容