Блокировать без конца if - VBA Error - PullRequest
1 голос
/ 12 октября 2011

Это небольшой фрагмент кода, который я пишу. Похоже, в последней строке выдается ошибка «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 ]

2 голосов
/ 12 октября 2011

Измените

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 голос
/ 12 октября 2011

У вас есть 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
0 голосов
/ 12 октября 2011

Изменить
Else: Shortfall = False
на

Else 
   Shortfall = False
   Pairs = 10
end if
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...