VBA isnumber istext函数问题
即时尝试检查一个数字是否是银行系统中的文本或数字。如果值不正确,它应该清除并发送一条错误消息,但是我的代码根本无法工作......有人可以帮我吗?这里是代码:VBA isnumber istext函数问题
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
我认为你应该使用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
我确定代码可以更好地构造,但是有一些东西需要你做。在这种情况下,如果输入了一个数字,它就会擦除文本框。显然,事情需要与你想要包含数字的文本框相反。
好吧,我改变了,但仍然没有工作......问题是,它根本不生成错误,代码只是不工作,如果一个数字而不是一个字,没有任何反应。我如何让它等到一切都输入? – 2011-05-31 13:26:47
@Daniel看看我的编辑,看看你能否拿出这个自定义是一个数字函数。我会稍微填一下。 – jonsca 2011-05-31 14:23:14
VB/VBA具有[默认属性](http://www.hitmill.com/programming/vb/defaultProp.html),尽管编码文本框的文本属性是一种很好的做法,但_name = TextBox1_不会导致错误。 – ray 2011-05-31 14:25:44
请比“我的代码根本不工作”更具体。错误发生在哪里?不要让我们猜... – 2011-05-31 13:11:53
你应该在你的模块的顶部有* Option Explicit *。这将迫使你声明var的名称并确保TextBox1是你引用的实际文本框。 – ray 2011-05-31 14:28:08
托管此VBA项目的应用程序是什么? TextBox来自哪个库?它是一个UserForm文本框?访问? Windows窗体?其他? – phoog 2011-05-31 14:37:38