2016-01-27 3 views
0

Я хочу сбросить счетчик в цикле каждый раз, когда выполняется условие.Сбросить цикл for при выполнении условия vba

Вот мой код:

Set report = Workbooks("Rapports").Worksheets("Relevé_" & Client & "_" & Datereport2) 
For i = 1 To 11 'pas auto 
    VM1 = report.Range("G" & i + 11).Value 
    VM2 = report.Range("H" & i + 11).Value 
    If VM1 = 0 And VM2 = 0 Then 
    report.Rows(i + 11 & ":" & i + 11).Delete 
    End If 

    Next 
end sub 

Когда строка удаляется я хочу, чтобы перезапустить I на 1, пока не больше ячеек = 0. Кроме того, я не хочу, чтобы удалить строки, где есть пустая ячейка ,

спасибо !!

+0

Для других способов сделать это увидеть [здесь] (http://stackoverflow.com/questions/33744149/code-in-vba-loops-and-never-ends-how-to-fix-this) –

ответ

2

Два изменения:

Set report = Workbooks("Rapports").Worksheets("Relevé_" & Client & "_" & Datereport2) 
For i = 11 To 1 Step -1 'pas auto 
    VM1 = report.Range("G" & i + 11).Value 
    VM2 = report.Range("H" & i + 11).Value 
    If VM1 = "0" And VM2 = "0" Then 
    report.Rows(i + 11 & ":" & i + 11).Delete 
    End If 

    Next 
End Sub 
  1. Loop назад. Это позаботится о любых дубликатах и ​​не будет запускаться более одного раза.

  2. изменение 0 до "0" Это заставит его найти 0, а не пустые ячейки.

+0

Спасибо вам, сэр !!!!!! – Florian

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