当前位置: 首页 > 知识库问答 >
问题:

使 VBA 表单文本框仅接受数字(包括、-和)。

姬俊能
2023-03-14

我有一个简单的文本框,我想验证它的输入,包括“”、“-”和“。”

Private Sub DisplayValue_TextBox_Change()
If Not IsNumeric(DisplayValue_TextBox.Value) Then
               MsgBox "Only numbers allowed"

      End If
End Sub

但这只接受数字0-9,不接受负值、正值或浮点值..

共有3个答案

章宏恺
2023-03-14

到目前为止,我一直依赖字符串解析来完成这项工作,我很高兴我决定检查并看看其他人是如何做的,并发现了这个问题。

我已经完善了鲁本·阿尔瓦雷斯的精彩答案。下面只允许数字输入,并且只允许一个小数点后。

Private Sub txtShift1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

    Select Case KeyAscii
        Case 46
            If InStr(1, txtShift1, ".") > 0 Then KeyAscii = 0
        Case 48 To 57
        Case Else
            KeyAscii = 0
    End Select

End Sub

这可以进一步细化,以便在必要时只允许单个“”、“-”等。

花稳
2023-03-14

使用 KeyPress 事件,并丢弃任何非数字条目:

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
王高邈
2023-03-14

除了我的评论:

考虑一个带有Textbox1和CommandButton1的示例Userform1

当您在< code>TextBox1中输入任何内容时,change事件将触发- ie。键入一个字符将触发< code>Change()事件,并传递当前值,因此即使您键入负号,当前逻辑也会失败。

您需要的是使用另一个事件,如 _AfterUpdate()_Exit(),并在第二个事件上使用 amphasis,因为您可以取消事件:)

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If Not IsNumeric(TextBox1.Value) Then
        MsgBox "only numbers allowed"
        Cancel = True
    End If
End Sub

您可以在此找到活动:

 类似资料:
  • 注意:下面我讨论的文本字段是一个MFXTextField,我从MaterialFX获得。 我已经搜索了很多关于如何在JavaFX中创建只接受数字的文本字段的内容。我发现了很多视频和帖子,但它们都不适合我,可能是因为它们太老了,只在过去工作过,我真的不知道。 所以,我有一个信用卡文本字段,我需要它来拒绝字母或数字以外的任何内容。这是我的文本字段: 下面是我的代码,它为常规TextField接受Tex

  • 我需要一个React Native组件,它只允许输入数字字符(0-9)。我可以将设置为,这几乎可以让我在那里输入,除了句点()。但是,这并不能阻止将非数字字符粘贴到字段中。 到目前为止,我想出的是使用事件来查看输入的文本。我从文本中删除任何非数字字符。然后将文本放在状态字段中。然后通过它的值属性更新。代码片段如下。 这似乎工作,但它似乎像一个黑客。还有别的办法吗?

  • 问题内容: 我是python新手。我正在尝试解析一个xml文件,并使用e-或e +计算所有数字输入的所有文本,包括近似值。例如,鉴于下面的伪代码(jerry.xml), 我想返回6,计算了2、141100、2.304e + 0150、5、59900和5.2e-015,而忽略了英文,1.21 $ / kg或4.1 $ / kg。 任何帮助,将不胜感激。现在,我有以下内容。 问题答案: 您可以简单地尝

  • 输入项目值时:1016M012G 10/1K16:1-C,但它仅显示1016M012G 10/1K16:1-C,G后不带加号 1016M012G/10/1K16:1-C工程罚款1016M012G-10/1K16:1-C工程罚款 有什么问题??

  • 问题内容: 我有这个模特 我希望用户在两个字段中都不能使用字母数字以外的任何其他字符。 有什么办法吗? 问题答案: 您将使用验证器来限制字段接受的内容。A可以在这里实现窍门: 请注意,已经有一个验证器可以为您验证电子邮件地址。上述验证器将不允许使用有效的电子邮件地址。

  • 我的问题简而言之: 任何建议都是非常欢迎的。

  • 我创建了以下正则表达式: 它应该接受字母数字、空格和撇号。输入应至少为1个字符,最多为24个字符。但它也只接受带撇号和空格的输入(例如,

  • 我想上传一个. xlsx文件到我的系统,条件是文件名包含一个指定的字符串。 例如:我想上传名称中包含“Paper”的文件,因此文件浏览器不应显示名称中不包含“Paper”的文件。 对于我在这篇文章中附上的照片中的示例,文件“订单#...”。不应显示。 我该怎么做?有可能实现这个想法吗?谢谢。