2014-07-02 169 views
-3

我正在使用instr函數查找範圍內的值vba並且當我查找我的字符串是"ra01"時,它找到它並且工作完美,但它不會遞增1.我的意思是由我的工作表Sheet1 範圍C使用instr在vba中查找值

row2 (2_x_ra01_ff string), 
row3 (ff_x_xxxx_ff), row4 (xxxxxxx), 
row5 (fffffff) row6 (1_f_ra01_xx) 
row7 (dfdfdfd) row8(f_x_ra01_xx) 

這些都是字符串,所以當我嘗試的發現值粘貼到Sheet2中,它是複製和粘貼pefect但不正確的增加,而不是我的sheet2看起來像這樣row2(2_x_ra01_ff string)然後row3 empty row4 empty row5 empty row6(1_f_ra01_xx)等等。那麼爲什麼它不粘貼在row3row4row5,爲什麼它會從sheet1中選擇完全相同的行。這是我的代碼,如果你運行它,你將會更好地理解它。

Sub find() 
    Dim x As String, i As Long, lastrow As Long, y As Long 
    x = "ra01" 
    y = 2 

    lastrow = Sheets("Sheet1").UsedRange.Rows.Count + 1 
    For i = 2 To lastrow 
     If Sheets("Sheet1").Cells.InStr(i, 6).Value = x Then 
      Sheets("Sheet2").Range("A" & y) = Sheets("Sheet1").Cells(i, 1) 
       y = y + 1 
     End If 
    Next i 
End Sub 
+0

我認爲你的代碼中有語法錯誤。另外,爲了得到你想要的東西,不要在你的目標工作表中使用相同的變量'i'。 – L42

回答

0

你可以試試這個:

Sub find() 
    Dim x As String, i As Long, lastrow As Long, y As Long 
    Dim sh1 As Worksheet, sh2 As Worksheet 
    Set sh1 = Sheets("Sheet1"): Set sh2 = Sheets("Sheet2") 
    x = "ra01" 

    With sh1 
     lastrow = .Range("F" & .Rows.Count).End(xlUp).Row 
     For i = 2 To lastrow 
      If InStr(.Range("F" & i).Value, x) <> 0 Then 
       .Range("A" & i).Copy _ 
       sh2.Range("A" & sh2.Rows.Count).End(xlUp).Offset(1, 0) 
      End If 
     Next i 
    End With 
End Sub 

HTH。

+0

感謝所有我必須改變我的變量,併爲每個循環定義單個變量和完美 – user3795861