如果没有结束则阻止 - 如果 - VBA错误

时间:2011-10-12 07:46:51

标签: ms-access vba if-statement

这是我写的代码的一小部分。它似乎在最后一行抛出“BLOCK IF WITHOUT END IF”错误。在咨询了这个MSDN链接

之后,我在这里找不到错误
    If Longs > 10 & Shorts > 10 Then
                 If Longs < Shorts Then
                       Pairs = Longs
                 Else
                       Pairs = Shorts
                 End If
    Else
      If Longs < 10 & Shorts > 10 Then
                      Shortfall = True
                      Pairs = 10
     Else: Shortfall = False
                      Pairs = 10 
End If              
End Sub

任何帮助都将受到高度赞赏

3 个答案:

答案 0 :(得分:2)

更改您的

Else
    If Longs < 10 & Shorts > 10 Then

ElseIf Longs < 10 & Shorts > 10 Then

这样,您就不会不必要地嵌套If构造,而只是在外部If构造中添加额外条件。

像这样:

If Longs > 10 & Shorts > 10 Then
    If Longs < Shorts Then
        Pairs = Longs
    Else
        Pairs = Shorts
    End If
ElseIf Longs < 10 & Shorts > 10 Then
    Shortfall = True
    Pairs = 10
Else 
    Shortfall = False
    Pairs = 10 
End If              

哎呀,你甚至可以完整地保留它,即使它很难看:

Else: Shortfall = False
                Pairs = 10 

答案 1 :(得分:1)

您有3 If但只有2 End If,请将End Sub更改为End If

如果您正确缩进代码,则会更容易看到:

If Longs > 10 & Shorts > 10 Then
   If Longs < Shorts Then
      Pairs = Longs
   Else
      Pairs = Shorts
   End If
Else
   If Longs < 10 & Shorts > 10 Then
      Shortfall = True
      Pairs = 10
   Else 
      Shortfall = False
      Pairs = 10 
   End If              
' missing End If
End Sub

答案 2 :(得分:0)

更改
   Else: Shortfall = False
进入

Else 
   Shortfall = False
   Pairs = 10
end if