我试图检查一个数字是否是银行系统中的文本或数字。如果值不正确,它应该擦除并发送错误消息,但我的代码根本不起作用...有人可以帮助我吗?这是代码:
Private Sub TextBox1_Change()
name = TextBox1
If Application.IsText(name) = True Then
IsText = True
Else
MsgBox "Insert only words"
Selection.name.Delete
End If
End Sub
答案 0 :(得分:1)
我认为您应该使用name = TextBox1.Text
代替。它可能会在那条线上给你一个错误。
此外,您可能希望等到用户完成键入响应后,我相信每次按下一个字符时都会运行更改的事件。选中或单击远离文本框后,AfterUpdate
将运行。
实际上,您应该将文本框空白设置为空字符串,而不是删除响应(我认为不会起作用)。
Private Sub TextBox1_AfterUpdate()
If Not MyIsANumber(TextBox1.Text) Then
MsgBox ("It's Text")
Else
TextBox1.Text = ""
End If
End Sub
Function MyIsANumber(str As String) As Boolean
For i = 1 To Len(str)
If IsNumeric(Mid(str, i, 1)) Then
MyIsANumber = True
Exit Function
End If
Next
MyIsANumber = False
End Function
我确信代码可以更好地构建,但是你需要的东西也是如此。在这种情况下,如果输入了数字,它只会擦除文本框。显然,对于要包含数字的文本框,事情需要相反。
答案 1 :(得分:0)