Vba 编译错误:不使用循环

Vba 编译错误:不使用循环,vba,excel,Vba,Excel,我知道,大多数情况下,当存在未终止的if时,会发生此错误,但我似乎找不到它。我是一个精通VBA的初学者,所以请耐心听我说。这是我的密码。基本上,此宏的要点是读取a9和b9中选定的值对,然后搜索结果列表,直到它与a9和b9中的值对应,然后将1添加到该特定行的列中 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

我知道,大多数情况下,当存在未终止的if时,会发生此错误,但我似乎找不到它。我是一个精通VBA的初学者,所以请耐心听我说。这是我的密码。基本上,此宏的要点是读取a9和b9中选定的值对,然后搜索结果列表,直到它与a9和b9中的值对应,然后将1添加到该特定行的列中

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    
Dim z作为整数
z=42
'如果选择了adc=第z行中的adc
'然后,如果选择了第z行中的sp=sp
'将1添加到第z行的win列
如果[a9]=[g[z]],则
如果[b9]=[h[z]],则
[i[z]]=[i[z]]+1
如果结束
'Elseif selected adc=/=z行中的adc
'然后将1添加到第行
'直到选定的adc=z行中的adc
ElseIf[a9][g[z]]那么
z=z+1
直到[a9]为止。Text=[g[z]]。Text
退出Do
'如果选择了第z行中的sp=sp
'然后将1添加到第z行的h列(win列)
如果[b9]=[h[z]],则
[i[z]]=[i[z]]+1
如果结束
'如果选择了第z行中的sp=/=sp
'然后将1添加到第行
'在第z行中选择sp=sp之前执行此操作
如果[b9][h[z]],则
z=z+1
直到[b9]为止。Text=[h[z]]。Text
退出Do
如果[b9]=[h[z]],则
[i[z]]=[i[z]]+1
如果结束

在底部,您必须执行Do,直到紧接着退出Do,这意味着Do永远不会发生,但在语法上,您仍然需要在Do之后有一个循环来标记循环的结束。

这与错误告诉您的完全一样:“您的
Do
没有
循环。”(
Exit Do
类似于
Exit For
而不是替换该语句的结尾)