Не правильно работает условная компиляция в excel XP

Программирование на Visual Basic for Applications
Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Не правильно работает условная компиляция в excel XP

Сообщение Vitaly1 » 22.11.2004 (Пн) 11:14

dim n as long
n =val(Application.Version)
#if n>8 then
userform1.show
#else
userform1.show 0
#end if

В 97 офисе все правилно определяется, а в XP c точность до наоборот, почему :?: :cry:

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 22.11.2004 (Пн) 14:08

Советую убрать условную компиляцию и оставить обычную. Директивы условной компиляции бессмысленно применять в зависимости от значений переменных, которые вычисляются в рантайме; следует использовать только константы.
Lasciate ogni speranza, voi ch'entrate.

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 22.11.2004 (Пн) 15:06

Убрать условную компиляцию можно только в том случаи, если запускать форму с параметром Show 0 из другой процедуры, иначе буде ошибка в 97 оффисе "не верное число параметров"!

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 22.11.2004 (Пн) 15:20

Если условие, указанное в IF не выполняется, то этот фрагмент кода никогда не получит управление. И ошибок, соответственно, тоже не будет. Правда у меня нет Office 97, возможно я и ошибаюсь.
В крайнем случае, можно объявить uf As Variant, присвоить Set uf = userform1 и вызывать uf.Show или uf.Show 0 в зависимости от условия.
Lasciate ogni speranza, voi ch'entrate.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 22.11.2004 (Пн) 16:22

Не в крайнем, а в единственно возможном (ну или ещё как - главное перевести в late binding), и не variant, а object :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Vitaly1
Брехман
Брехман
 
Сообщения: 1578
Зарегистрирован: 30.12.2002 (Пн) 16:35
Откуда: Russia, Mosсow

Сообщение Vitaly1 » 27.11.2004 (Сб) 14:35

Если условие, указанное в IF не выполняется, то этот фрагмент кода никогда не получит управление. И ошибок, соответственно, тоже не будет. Правда у меня нет Office 97, возможно я и ошибаюсь

Тем не мененее, при использовании метода Show c параметром, внутри оператора условия, компилируется, даже в том случаи, если данное условие ложно и выдается ошибка!


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 85

    TopList