首页 > 解决方案 > 使用 Excel VBA 在文本框中检测(或注册)点为逗号

问题描述

我有一个使用 Excel VBA 创建的用户表单,用户在其中输入一些数据,然后使用按钮将其保存到工作表中。用户需要填写的一些字段应该只具有数值。为了只允许这些文本框中的数字,我使用以下代码:

Private Sub txtShift1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
  Debug.Print KeyAscii
  If KeyAscii >= 48 And KeyAscii <= 57 Then
    Debug.Print "number"
  Else
    Debug.Print "other"
    KeyAscii = 0
  End If
End Sub

但是,我还想做一项调整。用户通常使用数字键盘填写这些字段,其中有一个点作为小数分隔符。在我所在的地区,逗号用作小数分隔符,我无法在将要使用的每台计算机上更改该配置。所以,我正在寻找一段代码,在输入特定文本字段时将点字符注册为逗号。类似于 Windows 10 计算器的功能。如果您使用逗号作为小数分隔符并在使用时在数字小键盘中键入点,您会得到一个逗号而不是点,以便轻松进行计算。

我想这可以使用相同的KeyAscii属性来实现,但我无法弄清楚。任何建议将不胜感激。

标签: excelvba

解决方案


尝试Application.DecimalSeparator = ","


推荐阅读