我相信我在这里遇到了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
不知道为什么这种比较会失败。
答案 0 :(得分:0)
InStr返回的数值等于搜索字段中搜索字符串的起始位置,因此您必须将其与数字进行比较:
If InStr(1, cell.Text, Range("A2").Text, vbTextCompare) > 0 Then Range("A5").Value = cell.Text
在旁注中,如果您不需要,那么处理.Value2
然后.Text
的速度会更快 - 请参阅this question。