2015-07-14 2 views
0

Итак, код, который у меня ниже, пытается найти WIP в столбце H. Если мы найдем WIP: скопируем 3 ячейки и сделаем 10 реплик из них в следующем столбце либо в той же строке, либо в следующей доступной строке.Ошибка прерывания кода

По какой-то причине код только успешно запускает цикл для первого значения «WIP», а затем дает ошибку прерывания кода. Кто-нибудь может понять, почему это происходит?

Спасибо, Ori

Sub Step1_update() 

Dim dblSKU As Double 
Dim strDesc As String 
Dim strType As String 
Dim BrowFin As Integer 
Dim Browfin1 As Integer 
Dim Counter As Integer 
Dim Trowfin As Integer 

Counter = 0 

Worksheets("Final").Activate 

Trowfin = 5 
BrowFin = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row 

'loop 1 
Do While Trowfin < BrowFin 

    'If 1 (set the 3 values) 
    If Range("H" & Trowfin).Value = Range("H3").Value Then 

     dblSKU = Range("F" & Trowfin).Value 
     strDesc = Range("G" & Trowfin).Value 
     strType = Range("H" & Trowfin).Value 

     'Find the last used row in Col J 
     Browfin1 = (ActiveSheet.Range("J" & Rows.Count).End(xlUp).Row) 

     Counter = 0 
     'paste values 15 times 
     Do While Counter < 15 

      'If 2 
      If Browfin1 > (Trowfin + Counter) Then 

        Range("J" & Browfin1).Value = dblSKU 
        Range("K" & Browfin1).Value = strDesc 
        Range("L" & Browfin1).Value = strType 


      ElseIf Browfin1 < (Trowfin + Counter) Then 

        Range("J" & (Trowfin + Counter)).Value = dblSKU 
        Range("K" & (Trowfin + Counter)).Value = strDesc 
        Range("L" & (Trowfin + Counter)).Value = strType 

      Else 

        Range("J" & (Trowfin + Counter)).Value = dblSKU 
        Range("K" & (Trowfin + Counter)).Value = strDesc 
        Range("L" & (Trowfin + Counter)).Value = strType 

      End If 

     'Loop to paste the WIP 15 times 
     Loop 

      Trowfin = Trowfin + 1 
      Counter = 0 

    'If cell (H...) is not a WIP 
    Else 

     Trowfin = Trowfin + 1 

    'If 1 
    End If 



'loop 1 
Loop 

End Sub 
+0

Вы хотите, чтобы 'Counter' увеличивался каждый раз? Должно ли это быть за пределами 'Else' право о' Loop'? –

+0

Я хочу, чтобы счетчик увеличивался в 15 раз, чтобы я мог вставить значение 15 раз, рядом со значением, которое я ищу. Хотя мне нужен trowfin, чтобы вернуться к исходному значению после завершения цикла. так что я могу продолжить поиск в списке. Я обновил свою работу, расскажу, что вы думаете. –

+0

Мне кажется, что вы просите бесконечный цикл, помещая 'Counter' внутри условного. Вероятно, это то, что происходит с прерыванием кода, если вы не вручную нарушаете код с помощью клавиши «BREAK». –

ответ

0

Ваш предыдущий код выглядел так:

Else 
    Range("J" & (Trowfin + Counter)).Value = dblSKU 
    Range("K" & (Trowfin + Counter)).Value = strDesc 
    Range("L" & (Trowfin + Counter)).Value = strType 

    Counter = Counter + 1 
    'If 2 
    End If 
Loop 

Вы должны сделать это вместо того, чтобы:

Else 
    Range("J" & (Trowfin + Counter)).Value = dblSKU 
    Range("K" & (Trowfin + Counter)).Value = strDesc 
    Range("L" & (Trowfin + Counter)).Value = strType 

    'If 2 
    End If 
    Counter = Counter + 1 
Loop 

Ваш текущий код имеет приращение внутри Else это означает, что есть шанс, что он не пострадает, когда цикл будет выполняться. Если это произойдет, то ваш цикл будет продолжаться бесконечно, сбой Excel или прерывание кода.

Если вы хотите создать цикл на основе счетчика, вам необходимо убедиться, что счетчик достигнет условия выхода в течение бесконечного промежутка времени.

Смежные вопросы