встретил кое-что, чего не видел до этого:
Что значат решетки и как работает, нигде не нашел
Код |
---|
#If VBA7 Then 'код #Else 'код #End If |
Помогли? отпишись, а то мы же волнуемся )))
11.11.2016 18:14:34
встретил кое-что, чего не видел до этого:
Помогли? отпишись, а то мы же волнуемся )))
|
|||
|
|
11.11.2016 18:29:25
Не обязательно для API функций. Вы можете менять части своего кода в зависимости от каких-то условий, например код для 2003/код для 2007 или стабильная версия/бета версия.
F1 - Understanding Conditional Compilation, #If...Then...#Else Directive, #Const Directive В общем, как обычно в VBA - поставьте курсор в незнакомое слово и нажмите F1
Изменено: |
|
|
|
11.11.2016 18:39:26
Казанский, со справкой не догадался смешно, но как то вылетело..... ладно, спасибо, дальше сам
Помогли? отпишись, а то мы же волнуемся )))
|
|
|
|
11.11.2016 18:44:40
guzen_pilot, я сейчас посмотрел справку, в ней нет описания для Вашего вопроса, а именно для VBA7, поэтому справка Вам бы не помогла. Думаю, что в гугле можно было бы найти информацию.
И фраза из справки "Условно компилирует выбранные блоки кода Visual Basic" вряд ли раскрывает смысл этого. Я бы не понял, о чем речь. Вот если бы был понятный пример, то была бы польза от справки.
Изменено: |
|
|
|
11.11.2016 18:54:15
Karataev, VBA7 по стольку, по скольку попал, меня интересовали решетки, справки хватило чтобы уловить смысл, еще раз спасибо
Помогли? отпишись, а то мы же волнуемся )))
|
|
|
|
11.11.2016 19:59:24
разобрался сам, подскажи другому вот ооочень простой пример на котором можно увидеть разницу в использовании решеток #
вкратце - с решетками предкомпиляция (если правильно назвал) выполняется не во всех блоках программы, а только "по ходу выполнения программы" на развилках условных операторов следуя только по линии где выполняется условие, если непонятно, читаем дальше, написал до тошноты подробно. Рассмотрим на примере, нам понадобится какая-нибудь ошибка о которую будет спотыкаться компилятор, в нашем примере мы будем использовать Option Explicit и не объявленную переменную. Строка - Option Explicit - в частности требует, чтобы все переменные, которые используются в коде, были объявлены (Dim b as integer) но мы специально не объявляем b, из-за этого, если мы попытаемся запустить наш первый вариант, то он не сработает, а компилятор остановится на строке b=2, хотя очевидно, что условие if "пробежит" по ветке ИСТИНА, (т.е. там где а=1), а блок else (там где b=2 ) выполнен не будет, и некоторые спросят - а каким образом "вылезла" ошибка, если в процессе выполнения кода мы никогда не попадем в то место где у нас есть ошибка? Дело в том, что VBA перед нашим запуском выполнил компиляцию нашего кода, т.е. пробежал по коду (причем по всем веткам, независимо от выполнения условия) и нашел (или не нашел) ошибки. В нашем случае он нашел не объявленную переменную. Во втором случае мы использовали решетки, которые указывают, что предварительную компиляцию следует выполнять только по пути выполнения программы игнорируя остальные ветки. Во втором примере наша ошибка находится в ветке куда программа не зайдет, поэтому компилятор пропустит ее и программа выполнится без проблем, хотя там есть ошибка, но она находится в ветке куда код "не заходил", но стоит нам "подложить" ошибку компилятору "под ноги" и он "споткнется". например поменяем знак больше на меньше (вариант3), что "повернет" ход выполнения программы в ветку else. вариант1, остановится на строке b=1? т.к. она не объявлена
Изменено:
Помогли? отпишись, а то мы же волнуемся )))
|
|||||||
|
|
||||||