none
Exсel 2003 Vba RRS feed

  • Вопрос

  • Здравствуйте. Подскажите пожалуйста Что означает такая конструкция: 

    if application.version >= 10# then ....

    Вызывает вопрос 10#, что это за тип. А так же, почему данная конструкция работала в 2003 exсel и перестала в 2010? 

    • Перемещено Abolmasov DmitryModerator 25 июля 2012 г. 6:42 (От:Языки программирования)
    17 июля 2012 г. 20:05

Ответы

  • Проблема в том что есть надстройка внутри которой есть такая проверка версии. Эта надстройка закрыта элементарным паролем и FlexLicense. Я могу посмотреть в чём проблема, но не могу изменить код для её решения самостоятельно. На счёт преобразования типов есть неявное преобразование. Есть подозрение что для 2003 версии и 2010 оно по разному настроено. Скорее всего нужно будет связаться с разработчиками надстройки и попросить поставить явное преобразование. 
    • Помечено в качестве ответа LXGDARK 22 июля 2012 г. 11:37
    18 июля 2012 г. 15:00

Все ответы

  • По идее здесь идет условие "если версия больше или равно 10-й то выполнить". Exel 2003 является 11-й версий и логично что работает, но почему не работает 2010 (14-я версия) не знаю.Возможно дело именно в 10#. Попробуйте убрать знак #

    Женат на WPF. Тайно встречаюсь с WinRT. Не сложилось с C#!

    18 июля 2012 г. 9:52
  • Здравствуйте LXGDARK. Я понимаю про условие. 10# - это тип double, нашёл сегодня в документации. Недоумение вызывает отказ работы в 14-ой версии Excel. Наверное дело в изменившемся приведении типов  - буду продолжать поиск по документации. (application.version -  string, 10# - double )
    18 июля 2012 г. 13:51
  • У меня получилось так:

    if val(application.version) >= 10# then ....

    UPD. Знак # не обязателен.


    Женат на WPF. Тайно встречаюсь с WinRT. Не сложилось с C#!

    • Изменено LXGDARK 18 июля 2012 г. 14:44
    18 июля 2012 г. 14:43
  • Спасибо за подсказку, к сожалению это способ - нарушает лицензию использования надстройки Excel, в которой и есть такая конструкция. Поэтому ищу другое решение. Ваш вариант буду иметь в виду на крайний случай. 
    18 июля 2012 г. 14:47
  • Спасибо за подсказку, к сожалению это способ - нарушает лицензию использования надстройки Excel, в которой и есть такая конструкция. Поэтому ищу другое решение. Ваш вариант буду иметь в виду на крайний случай. 

    А про это можно по подробнее? Первый раз слышу, что бы Val чего то нарушал. По сути как я понял в 14-м в application.version возвращается строка и другого способа преобразовать строку в число я не знаю.


    Женат на WPF. Тайно встречаюсь с WinRT. Не сложилось с C#!

    18 июля 2012 г. 14:50
  • Проблема в том что есть надстройка внутри которой есть такая проверка версии. Эта надстройка закрыта элементарным паролем и FlexLicense. Я могу посмотреть в чём проблема, но не могу изменить код для её решения самостоятельно. На счёт преобразования типов есть неявное преобразование. Есть подозрение что для 2003 версии и 2010 оно по разному настроено. Скорее всего нужно будет связаться с разработчиками надстройки и попросить поставить явное преобразование. 
    • Помечено в качестве ответа LXGDARK 22 июля 2012 г. 11:37
    18 июля 2012 г. 15:00
  • Если ответ на ваш вопрос дан, то пометьте соответствующий пост как ответ.

    Женат на WPF. Тайно встречаюсь с WinRT. Не сложилось с C#!

    20 июля 2012 г. 7:22