退出内循环

时间:2017-11-21 18:01:56

标签: excel vba excel-vba

我在这个项目中使用Excel VBA。该项目的目标是有一个显示多个列的工作表。每列都带有项目代码(用于勺子)和库存中的勺子数量。这部分是创建和功能的。

然后,我希望工作簿搜索未结订单列表,获取在未结订单上创建产品所需的料品ID,并将其放在先前创建的料品列中。

以下代码是我目前所拥有的

 For j = 2 to 264
   For p =2 to 300
     'If the item on the order matches the item on the material required sheet, then the variables are set and it starts the inner loop
      If Sheets("OOR").Cells(j, 5).Value = Sheets("BOM").Cells(p, 1).Value then
          FgScoQty = Sheets("OOR").Cells(j, 10).Value
          ItemScoop = Sheets("BOM").Cells(p, 4).Value
          FgItem = Sheets("BOM").Cells(p, 1).Value 
          'If they match, it then looks on the sheet with the columns to put this information in the next blank row of the correct column

          For x = 1 to 258
              If ItemScoop = Sheets("Sheet5").Cells(1, x).Value Then
                  lastRow = Sheets("Sheets5").Cells(Rows.Count, x).End(xlUp).Offset(1, 0).Row
                  Sheets("Sheet5").Cells(lastRow, x).Value = fgItem
                  Sheets("Sheet5").Cells(lastRow, x).Offset(0, 1).Value = fgScoQty
              End If 
          Next x 
     End If 
   Next p
 Next j 

这是第一次完美的

之后我就会遇到问题

 If ItemScoop = Sheets("Sheet5").Cells(1, x).Value Then 

我不确定为什么。我相信在满足条件后我需要退出内循环(循环x)。我在网上做了很多搜索,因为这似乎是一个相当普遍的问题,但我找不到任何有用的东西。

当我尝试Exit For时,它似乎将我从我的所有循环中删除。

我希望它用变量填充单元格,然后返回到开头并查看下一个j。

1 个答案:

答案 0 :(得分:0)

一旦达到你想要的效果,你需要退出循环 因此,要强制开始下一个循环( j ),您需要使用Exit for

试一试:

 For j = 2 to 264
   For p =2 to 300
     'If the item on the order matches the item on the material required sheet, then the variables are set and it starts the inner loop
      If Sheets("OOR").Cells(j, 5).Value = Sheets("BOM").Cells(p, 1).Value then
          FgScoQty = Sheets("OOR").Cells(j, 10).Value
          ItemScoop = Sheets("BOM").Cells(p, 4).Value
          FgItem = Sheets("BOM").Cells(p, 1).Value 
          'If they match, it then looks on the sheet with the columns to put this information in the next blank row of the correct column

          For x = 1 to 258
              If ItemScoop = Sheets("Sheet5").Cells(1, x).Value Then
                  lastRow = Sheets("Sheets5").Cells(Rows.Count, x).End(xlUp).Offset(1, 0).Row
                  Sheets("Sheet5").Cells(lastRow, x).Value = fgItem
                  Sheets("Sheet5").Cells(lastRow, x).Offset(0, 1).Value = fgScoQty
              End If 
          Next x

          'HERE YOU ESCAPE THE LOOP
          Exit For

     Else
     End If 
   Next p
 Next j