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现在是这样的:这是一个边界。您应该扩展您的答案,在此处包含尽可能多的信息,并使用该链接仅供参考。也许可以扩展您的答案,并包括一个例子。