簡體   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