2014-07-02 53 views
-1

我怎麼能每次修復我的增量當我使用instr與vba,我的代碼工作完美,找到字符串即時尋找,但它沒有增加權利,而不是做一次,它執行兩次,並結束於第12行,這是我的最後一行。我瞭解它的停止在我的lastrow這是12,但我不明白爲什麼它遞增兩次,當我說增加兩次這意味着首先找到我的所有字符串,這是他們4然後它回到第一個,並繼續這樣做,直到LASTROW是12,這裏是我的代碼和我的範圍就像我運行後
1N_ra01_68K
1N_ra01_K
1N_ra01_70K
1N_ra01_88K
1N_ra01_K
1N_ra01_70K
1N_ra01_88K
1N_ra01_70K
1N_ra01_88K
1N_ra01_88K
1N_ra01_88K只是提醒喲我行星星2和12我怎樣才能解決我的增量instr與vba

sub find() 
    dim i as long, x as string, y as long, Sheet1rows as long 
    x = "ra01" 
    y = 2 
    Sheet1rows = Sheets("Sheet1").UsedRange.Rows.Count + 1 
    For i = y To Sheet1rows 
     If InStr(1, Sheets("Sheet1").Cells(i, 3), x) > 0 Then 
      Sheets("Sheet3").Range("F" & y) = Sheets("Sheet1").Cells(i, 6) 
      y = y + 1 
     End If 
    Next i 
end sub 
+2

使用y以設置我,然後改變的值y在for循環中可能會導致一些問題。 –

+0

你能解釋一下它的意義嗎?有兩個變量遞增:'y'和'i'。你在說哪一個? –

+0

這段代碼至少據我所知可以工作。如果您收到意想不到的結果,請詳細描述您的具體問題。如果我對'我= 2到Sheet1Rows'或'對於我= y到Sheet1Rows',我沒有看到任何可觀察到的差異。在這種情況下使用計數器'y'是可以的,因爲VBA不支持並行迭代。 –

回答

0

結束嘗試這個...

For i = y To Sheet1rows 
     If InStr(1, Sheets("Sheet1").Cells(i, 3), x) > 0 Then 
      Sheets("Sheet3").Range("F" & y) = Sheets("Sheet1").Cells(i, 6) 
      y = y + 1 
     End If 
    Next 
+0

它的工作我只需要爲我的所有循環定義單個變量謝謝你們 –