繁体   English   中英

在Excel VBA中的字符串中查找数字

[英]Finding a number in a string in excel VBA

我试图在excel vba中通过文本框提供的字符串中找到一个数字,并显示一条错误消息,指出它无法继续,此后必须停止加载下面的代码。

fname是用户指定的全名

If InStr(fname, "0") Then
    MsgBox ("Number Found In Your Name. Please Correct That!!")

 Dim i(0 To 9) As String
    i(0) = "0"
    i(1) = "1"
    i(2) = "2"
    i(3) = "3"
    i(4) = "4"
    i(5) = "5"
    i(6) = "6"
    i(7) = "7"
    i(8) = "8"
    i(9) = "9"


If InStr(fname, "0") Then
    MsgBox ("Number Found In Your Name. Please Correct That!!")

End If

如果它包含一个数字(数字列表),则应该搜索用户给出的文本并显示错误

InStr函数不是布尔值,它返回整数值。 如果您的搜索表达式(例如“ 0”)在string(fname)内,它将为您提供字符串(fname)的第n个数字。 否则,它返回零。 因此,您可以尝试如下代码:

For i=0 to 9
    If InStr(fname, i)>0 Then
        MsgBox ("Number Found In Your Name. Please Correct That!!")
    End If
Next i

也许是一个简单的答案,但是Cstr()将整数更改为字符串。

For i = 0 To 9
    If InStr(fname, CStr(i)) Then
        MsgBox ("Number Found In Your Name. Please Correct That!!")
        Exit For
    End If
Next

无需循环,只需一行即可完成:

If Fname like "*[0-9]*" Then MsgBox ("Number Found In Your Name. Please Correct That!!")

正则表达式是最好的方法,但是循环也可以工作:

Sub dural()
    Dim s As String, i As Long
    s = "james"
    For i = 0 To 9
        If InStr(1, s, CStr(i)) > 0 Then
            MsgBox ("Number Found In Your Name. Please Correct That!!")
            Exit Sub
        End If
    Next i
End Sub

您可以尝试实现“评估”

If Evaluate("COUNT(FIND(ROW(1:10)-1,""" & fname & """))") > 0 then
    Msgbox "Number Found In Your Name. Please Correct That!!"
End if

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM