2016-05-05 248 views

回答

3

只需做两次搜索

Sub Demo() 
    Dim DataString As String 
    Dim SearchString As String 
    Dim i As Long 

    DataString = "this is a test to test" 
    SearchString = "test" 

    i = InStr(1, DataString, SearchString, vbTextCompare) 
    i = InStr(i + 1, DataString, SearchString, vbTextCompare) 

    Debug.Print "Second occurance starts at position " & i 
End Sub 
2

更新
要只要找到最后一次出现那么就

MsgBox InStrRev("this is a test to test", "test") 

其处理少于2次出现

有点笨拙,但处理最初的回答1个或0出现次数

Dim strIn As String 
Dim strOut As String 
Dim lngPos As Long 
Dim lngPos2 As Long 

strIn = "test" 
strOut = "this is a test to test" 

lngPos = InStr(strOut, strIn) 

If lngPos > 0 Then 
    lngPos2 = InStr(lngPos + 1, strOut, strIn) 
    If lngPos2 > 0 Then MsgBox strIn & " at " & lngPos2 
Else 
    MsgBox "No " & strIn 
End If 
1

你需要找到第一次出现开始的位置,然后偏移搜索相应的范围。

嵌套Mid/InStr功能将这样的伎俩:

Dim x As String, fVal As String 

x = "test this is a test" 
fVal = "test" 

y = Mid$(Mid$(x, InStr(x, fVal) + Len(fVal)), InStr(Mid$(x, InStr(x, fVal) + Len(fVal)), fVal)) 

Debug.Print y 
相关问题