如何检查string中的可变数字

早上好,

我正在尝试创buildVBA代码,以确定是否在stringfindvariablesvalue (数字)。 string长度可以有所不同,可以包含1个或多个由a和空格隔开的数字。 我试图使用InStr方法,但不幸的是,如果我的value是1,并且string包含17,则它返回为true。 我怎样才能使它返回假,因为1不等于17。

以下是我目前的代码:

 'FRB_Code and FRB_Array are variable values within my code but for 'the purpose of this question I have assigned them values. FRB_Array = "10, 17, 21" FRB_Code = 1 'ce.Value If InStr(FRB_Array, FRB_Code) Then MsgBox "Found" Else MsgBox "Not Found" ce.Delete Shift:=xlUp End If Next ce End If 

所以最终的结果应该是在FRB_Array中找不到FRB_Code,并且这个单元格被删除了。

谢谢你的帮助。

你可以使用一个数组。

 Sub FindValue() Dim sMyString As String Dim sToFind As String Dim Arr Dim i As Long Dim bFound As Boolean sMyString = "10, 17, 21" Arr = Split(sMyString, ", ") sToFind = "17" For i = 0 To UBound(Arr) If Arr(i) = sToFind Then MsgBox "Found" bFound = True Exit For End If Next i If Not bFound Then MsgBox "Not found" End Sub 

问题是“1”会“instring”到“1”,“217”,“871”等。更好的是预先填充和后置填充空格:

 Sub NumberInString() BigString = " 1 23 54 79 " LittleString = " 23 " MsgBox InStr(1, BigString, LittleString) End Sub 

InStr在这里不太合适,因为你比较数字而不是string。 要做你想要的东西将string拆分成片段,然后遍历返回的数组检查每个项目。 Val用于将数组中的每个项目转换为一个整数。

 bFound = False FRB_Array = "10, 17, 21" FRB_Code = 17 ar = Split(FRB_Array, ",") For i = 0 To UBound(ar) If FRB_Code = Val(ar(i)) Then bFound = True End If Next i If bFound Then MsgBox ("found") Else MsgBox ("not found") End If 

您可以使用REGEX来确定匹配。

http://msdn.microsoft.com/en-us/library/twcw2f1c(v=vs.110).aspx

正则expression式将是“1 [^ \ d] | 1 $”,你会用你的FB_Code值replace1。

该expression式有一个or(|)来处理数组中的最后一个数字。