2014-07-02 34 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

它的工作我只需要为我的所有循环定义单个变量谢谢你们 –