Excel InStr不匹配

时间:2015-02-25 23:20:19

标签: excel vba

我相信我在这里遇到了InStr的麻烦。

我有一个for循环,循环遍历一堆值,并在单元格包含" - "时正确退出。

但是,如果单元格包含可以在Range(" A2")中找到的文本,那么我希望它将它的值吐出到Range(" A5&#34) ;)

Private Sub CommandButton21_Click()
    Dim cell As Range
    For Each cell In Sheets(1).Range("$B:$B")
        Dim i As Long
        i = cell.Row + i
        If InStr(1, cell.Text, Range("A2").Text, vbTextCompare) Then Range("A5").Value = cell.Text
        If cell.Text = "--" Then Exit For
    Next cell
End Sub

不知道为什么这种比较会失败。

1 个答案:

答案 0 :(得分:0)

InStr返回的数值等于搜索字段中搜索字符串的起始位置,因此您必须将其与数字进行比较:

If InStr(1, cell.Text, Range("A2").Text, vbTextCompare) > 0 Then Range("A5").Value = cell.Text

在旁注中,如果您不需要,那么处理.Value2然后.Text的速度会更快 - 请参阅this question