#ms-access #vba #if-statement
#ms-access #vba #if-оператор
Вопрос:
Это небольшой фрагмент кода, который я пишу. Кажется, что в последней строке появляется ошибка «БЛОКИРОВАТЬ, ЕСЛИ БЕЗ КОНЦА, ЕСЛИ». Я не могу обнаружить ошибку здесь, после консультации с этой ссылкой MSDN
If Longs > 10 amp; Shorts > 10 Then
If Longs < Shorts Then
Pairs = Longs
Else
Pairs = Shorts
End If
Else
If Longs < 10 amp; Shorts > 10 Then
Shortfall = True
Pairs = 10
Else: Shortfall = False
Pairs = 10
End If
End Sub
Любая помощь будет высоко оценена
Комментарии:
1. скорее всего, это из-за того, что в строке
Else:
отсутствуетEnd If
, должно ли это бытьElse: Shortfall = false: Pairs = 10: End If
?2. Я всегда использую бесплатную надстройку под названием «Smart Indent», чтобы получить хороший отступ кода, когда я наследую какой-то визуально ужасный код, подобный вашему.
Ответ №1:
Измените свой
Else
If Longs < 10 amp; Shorts > 10 Then
Для
ElseIf Longs < 10 amp; Shorts > 10 Then
Таким образом, вы не добавляете ненужные вложенные If
конструкции, а просто добавляете дополнительное условие к своей внешней If
конструкции.
Вот так:
If Longs > 10 amp; Shorts > 10 Then
If Longs < Shorts Then
Pairs = Longs
Else
Pairs = Shorts
End If
ElseIf Longs < 10 amp; Shorts > 10 Then
Shortfall = True
Pairs = 10
Else
Shortfall = False
Pairs = 10
End If
Черт возьми, вы даже можете оставить это без изменений, хотя это довольно некрасиво:
Else: Shortfall = False
Pairs = 10
Ответ №2:
У вас есть 3 If
, но только 2 End If
, измените End Sub
в конце на End If
.
Если вы правильно разместите отступ в коде, его будет намного легче увидеть:
If Longs > 10 amp; Shorts > 10 Then
If Longs < Shorts Then
Pairs = Longs
Else
Pairs = Shorts
End If
Else
If Longs < 10 amp; Shorts > 10 Then
Shortfall = True
Pairs = 10
Else
Shortfall = False
Pairs = 10
End If
' missing End If
End Sub
Комментарии:
1. Спасибо, это сработало. Я работал в терминах метода типа C, если [операторы if] иначе, если [операторы] … else [do the rest] Поэтому отдавал более высокий приоритет последнему, хотя на самом деле это вложенный Else.
Ответ №3:
Изменить
Else: Shortfall = False
в
Else
Shortfall = False
Pairs = 10
end if