Add*_*ddy 5 excel vba excel-vba
我有简单的textBox,我想验证它的输入,包括"+"," - "和".".这是我尝试过的
Private Sub DisplayValue_TextBox_Change()
If Not IsNumeric(DisplayValue_TextBox.Value) Then
MsgBox "Only numbers allowed"
End If
End Sub
Run Code Online (Sandbox Code Playgroud)
但是这只接受数字0-9没有负数,正值或浮点值.
小智 12
继我的评论:
考虑一个带有Textbox1和CommandButton1的示例Userform1
当您TextBox1
在更改事件中输入任何内容时触发 - 即.键入一个字符会触发Change()
事件并传递当前值,因此即使您键入负号,您当前的逻辑也会失败.
你需要的是在第二个事件中使用另一个类似_AfterUpdate()
或_Exit()
强调的事件,因为你可以取消事件:)
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
Run Code Online (Sandbox Code Playgroud)
你可以在这里找到活动:
小智 8
使用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
Run Code Online (Sandbox Code Playgroud)
到目前为止,我一直依靠字符串解析来完成这项工作,我很高兴我决定检查并看看其他人是如何做的,并找到了这个 Q。
我已经完善了鲁本·阿尔瓦雷斯 (Ruben Alvarez) 的出色回答。下面只允许输入数字,并且只允许一位小数点。
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
Run Code Online (Sandbox Code Playgroud)
这可以进一步细化以仅允许单个“+”、“-”等必要。
归档时间: |
|
查看次数: |
65037 次 |
最近记录: |