在以下代码中,shLook
是一张工作表,其中包含我希望通过迭代shSource
表示的行来搜索工作表rowSt
中的字符串的文本项列表。
LPosition = InStr(1, shSource.Cells(rowSt, 18), shLook.Cells(i, 1).Value)
这很有效,但如果shLook
中的任何文字包含通配符,它就无法在shSource
中找到相应的字符串。
是否有其他方法可以实现这一点,以便我可以将通配符放在文本项列表中?
答案 0 :(得分:0)
如果您只想知道字符串是否存在,可以使用:
Dim found As Boolean
Dim searchString As String
searchString = shLook.Cells(i, 1).Value
If Left(searchString, 1) <> "?" Then searchString = "*" & searchString
If Right(searchString, 1) <> "?" Then searchString = searchString & "*"
found = shSource.Cells(rowSt, 18).Value Like searchString
如果您想知道字符串开始的位置,则需要在执行Instr
之前删除通配符:
If Found Then
LPosition = InStr(shSource.Cells(rowSt, 18), Replace(Replace(searchString, "?", ""), "*", ""))
End If
注意:你不能在没有完成第一部分的情况下完成第二部分,因为在搜索&#34;?ABC&#34;的情况下你会得到一个错误的匹配。在&#34; XYZABCIJK&#34;。