Function VBA isnumber istext函数问题
我正在检查一个数字是银行系统中的文本还是数字。如果值不正确,它应该删除并发送错误消息,但我的代码根本不工作。。。有人能帮我吗?代码如下:Function VBA isnumber istext函数问题,function,vba,Function,Vba,我正在检查一个数字是银行系统中的文本还是数字。如果值不正确,它应该删除并发送错误消息,但我的代码根本不工作。。。有人能帮我吗?代码如下: Private Sub TextBox1_Change() name = TextBox1 If Application.IsText(name) = True Then IsText = True Else MsgBox "Insert only words" Selection.name.Delet
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
我相信代码的结构可以更好,但有些东西符合您的需要。在这种情况下,如果输入了一个数字,它只会擦除文本框。显然,对于要包含数字的文本框,情况需要相反。您考虑过vartype()函数吗 请比“我的代码根本不起作用”更具体一些。错误发生在哪里?不要让我们一直猜测…你应该在你的模块顶部有显式选项。这将强制您声明名称var,并确保TextBox1是您正在引用的实际Textbox。哪个应用程序承载此VBA项目?文本框来自哪个库?它是一个用户表单文本框吗?通道Windows窗体?其他的?我改变了,但还是不起作用。。。问题是它根本不会产生错误,代码根本不起作用,如果一个数字代替一个单词,什么也不会发生。我怎样才能让它等到所有的东西都被输入?@Daniel看看我的编辑,看看你是否能想出一个自定义的是一个数字函数。我会在一点之后再填写。VB/VBA已经这样做了,尽管编写Textbox的text属性name=TextBox1的代码是一个很好的做法,它不会导致错误。@jonsca这就是作为一名训练有素的程序员所得到的:D@jonsca成功了!我只是做了一个小的改变,现在它的工作完美!thxx现在是这样的:这是一个边界。您应该扩展您的答案,在此处包含尽可能多的信息,并使用该链接仅供参考。也许可以扩展您的答案,并包括一个例子。