如何检查string中的可变数字
早上好,
我正在尝试创buildVBA代码,以确定是否在string
findvariablesvalue
(数字)。 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(|)来处理数组中的最后一个数字。