Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Почему ошибка в коде с условием и оператором With?

23K
08 июля 2007 года
akokin
11 / / 08.07.2007
В Word 2003 пытаюсь писать макрос, программно скрывающий строку состояния. Код наипростейший, но при выполнении дает ошибку: "Compile error: Else without If".
Вот код:

 
Код:
With Application.CommandBars("Status Bar")
If .Visible = False Then .Visible = True
Else
.Visible = False  
End If
End With


Это я хотел облегчить код и поэтому использовал оператор With. Без него работает такой код:
 
Код:
If Application.DisplayStatusBar = False Then
        Application.DisplayStatusBar = True
    Else
       Application.DisplayStatusBar = False
    End If


В чем может быть проблема?

Спасибо.
309
09 июля 2007 года
el scorpio
1.1K / / 19.09.2006
Потому что в операторе IF либо ВСЕ блоки должны быть в одной строке, либо ВСЕ в разных, как во втором случае.
А в первом коде что получается? Строка "IF условие THEN действие" представляет собой законченный блок операторов. В результате чего следующие ниже операторы ELSE и ENDIF "повисают". А WITH тут вообще ни при чём

Правильно будет писать в одну строку:
If .Visible = False Then .Visible = True Else .Visible = False
263
09 июля 2007 года
koltaviy
816 / / 16.12.2004
Цитата: el scorpio

..
Правильно будет писать в одну строку:
If .Visible = False Then .Visible = True Else .Visible = False


А читать-то твой код как??
К тому же, pavel55 уже дал ссылку на тему, где аффтору ответили достаточно доходчиво..

8.9K
15 июля 2007 года
Залетин Виталий
71 / / 10.12.2005
Цитата: el scorpio
Потому что в операторе IF либо ВСЕ блоки должны быть в одной строке, либо ВСЕ в разных, как во втором случае.
А в первом коде что получается? Строка "IF условие THEN действие" представляет собой законченный блок операторов. В результате чего следующие ниже операторы ELSE и ENDIF "повисают". А WITH тут вообще ни при чём

Правильно будет писать в одну строку:
If .Visible = False Then .Visible = True Else .Visible = False



Правильно говорит!

8.9K
15 июля 2007 года
Залетин Виталий
71 / / 10.12.2005
Цитата: koltaviy
А читать-то твой код как??
К тому же, pavel55 уже дал ссылку на тему, где аффтору ответили достаточно доходчиво..



Ну пишите:
If ... Then
...
Else
...
End If

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог