如何检查跟随InStr匹配的字符串后面的子字符串

时间:2013-07-30 09:19:23

标签: vba

我正在尝试使用函数InStr在另一个字符串中查找特定字符串。

当我找到它时,我想检查该字符串后面的内容(例如最终用户)并返回此部分。到目前为止,我设法写了这个:

If InStr(LCase(analysis), "End-user:") > 1 Then Range("AE" & i).Value = "OK"

一旦检测到此字符串,就会将相关单元格标记为OK

有人可以帮我吗?

2 个答案:

答案 0 :(得分:1)

InStr将要搜索的字符串的第一个索引(“最终用户:”)返回到目标字符串(Analysis)。你应该把它和长度一起计算你想要的子串。还要记住,您在一个部分中使用LCase而在另一个部分中没有使用{什么引起搜索的字符串永远不会被找到,只要它包含大写字母)。提供您想要的代码:

Dim analysis As String : analysis = "End-user: anyone"
Dim stringToSearch as String : stringToSearch = "End-user:"
Dim finalBit As String
Dim startIndex As Integer: startIndex = InStr(LCase(analysis), LCase(stringToSearch))
If (startIndex > 0 And InStr(LCase(analysis), LCase(stringToSearch)) < Len(analysis)) Then
  Dim endIndex As Integer: endIndex = startIndex + Len(stringToSearch)
  finalBit = Mid(analysis, endIndex, Len(analysis) - endIndex + 1)
End If

'finalBit -> " anyone"

答案 1 :(得分:1)

更直接:

Dim StrMain As String
Dim StrSearch As String
Dim LngPos As Long

StrMain = "sample text End-user:kilroy"
StrSearch = "End-user:"
LngPos = InStr(StrMain, StrSearch)

If LngPos > 0 Then MsgBox Right$(StrMain, Len(StrMain) - LngPos - Len(StrSearch) + 1)