2014-03-06 61 views
0

早安內檢查變量編號,如何將字符串

我試圖創建VBA代碼,如果一個變量value(數量)是string中發現,將確定。 string可以長度不同,可以包含1個或更多的數字,由a和空格分隔。我試圖使用InStr方法,但不幸的是,如果我的value是1並且字符串包含17,它會回到正確的。我怎樣才能讓這個將返回false,因爲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_Code未在FRB_Array發現那裏的細胞被刪除了。

謝謝你的幫助。

+0

確實在弦總是分開wuth逗號你這樣的價值觀:「 」10,17,21「'? –

+0

'逗號分割'也許? –

+0

字符串「1」包含在數組中(即「1」7,2「1」),因此您可以嘗試通過逗號分割來定義數組中的元素,然後執行比較 – Alex

回答

1

你可以爲此使用一個數組。

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

問題是, 「1」 將 「instring」 到 「1」, 「217」, 「871」 等更好的預墊和墊後用空格:

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

InStr在這裏並不合適,因爲您在比較數字而不是字符串。要做你想要的東西將字符串拆分成片段並循環遍歷返回的數組檢查每個項目。 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 
相關問題