2016-08-15 6 views
-1

Я понимаю, что чаще всего эта ошибка возникает, когда есть неисчерпаемая, если я не могу ее найти. Я полный новичок в Excel VBA, поэтому, пожалуйста, несите меня. Вот мой код. В принципе, суть этого макроса заключается в том, чтобы прочитать выбранное сопряжение значений в a9 и b9, а затем выполнить поиск по списку результатов, пока он не будет соответствовать значениям в a9 и b9, а затем добавить 1 к столбцу в этой конкретной строке.Ошибка компиляции: do without loop

Dim z As Integer 
z = 42 
'If selected adc = adc in row z 
' Then if selected sp = sp in row z 
'Add 1 to win column in row z 

If [a9] = [g[z]] Then 
    If [b9] = [h[z]] Then 
    [i[z]] = [i[z]] + 1 
    End If 

    'Elseif selected adc =/= adc in row z 
    'Then add 1 to row 
    'Do until selected adc = adc in row z 

ElseIf [a9] <> [g[z]] Then 
    z = z + 1 
    Do Until [a9].Text = [g[z]].Text 
    Exit Do 

    'If selected sp = sp in row z 
    'Then add 1 to column h (win column) in row z 

    If [b9] = [h[z]] Then 
     [i[z]] = [i[z]] + 1 
    End If 

    'If selected sp =/= sp in row z 
    'Then add 1 to row 
    'Do until selected sp = sp in row z 

    If [b9] <> [h[z]] Then 
     z = z + 1 
     Do Until [b9].Text = [h[z]].Text 
     Exit Do 
     If [b9] = [h[z]] Then 
      [i[z]] = [i[z]] + 1 
     End If  
+1

Это точно так же, как ошибка говорит вам: «У вашего' Do' нет «Loop». » ('Exit Do' похоже на' Exit For', не заменяющий конец этого утверждения) –

ответ

1

Внизу есть ли Пока не сразу за выходом сделать, это означает, Д.О. никогда не бывает, но все же синтаксический вам нужно иметь петлю после Do, чтобы отметить конец цикла.