...
If x>0 Then
...
While y=0
...
...
End if
...
...
Wend
Проблемы с If'ом
Заранее пасиба.
Такое иногда бывает. Помогает замена модуля на новый с тем же текстом. Либо ошибка в другом месте кода, может даже не в этой процедуре. Или безусловный переход за пределы блока IF. С другими не сталкивался.
Цитата:
Originally posted by Inna
Подскажите, пожалуйста, в чем может быть причина ошибки при сообщении "End if without block if", если все if-ы и endif-ы на месте, других "двойных" операторов в программе нет? Почему vb не видит его? Правда, у меня внутри if-a довольно большой кусок, но все if, else, endif там, где надо, как положено.
Заранее пасиба.
Подскажите, пожалуйста, в чем может быть причина ошибки при сообщении "End if without block if", если все if-ы и endif-ы на месте, других "двойных" операторов в программе нет? Почему vb не видит его? Правда, у меня внутри if-a довольно большой кусок, но все if, else, endif там, где надо, как положено.
Заранее пасиба.
Пошли свой пример. Если кусок слишком большой вставь файлом.
Относись к таким операторам, как к обычным скобкам, тогда будет проще понять в чем дело.
Вот типичные примеры, когда может встретиться ошибка "End if without block if":
1.
Код:
В этом случае вроде бы все операторы спарены - НО! - Компилятор открывает скобку If, потом открывает скобку While (то есть мы внутри открытой скобки While), потом видит закрывающую скобку If. Возникает ошибка, потому что чтобы закрыть If, надо сначала закрыть While. Если перевести на арифметический язык - у тебя написано выражение (...[...)...] Сама понимаешь, что в нем ошибка.
2.
Код:
If x>0 Then s=s+x
...
...
End if
...
...
End if
И здесь вроде бы все правильно. И опять НО. "s=s+x" написано в той же строке, что Then. Поэтому компилятор считает, что это был If из одной строки. Поэтому End If оказывается ошибочным. Правильно будет так:
Код:
If x>0 Then
s=s+x
...
...
End if
s=s+x
...
...
End if
Вот. Есть, конечно, и другие варианты. Пиши.
Спасибо всем! Оказывается, дело было в том, что я первое действие писала в одной строке с then. Почему-то раньше я на это внимание не обращала и проблем не возникало, я даже и не думала, что это так важно. В остальном-то все правильно, я чуть мозги не сломала. Еще раз спасибо, всем, кто ответил. Вы прямо спасли меня от долгой и мучительной смерти от испарения мозгов! 8)