Идеология application.volatile

Программирование на Visual Basic for Applications
grim
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 25.07.2005 (Пн) 9:33

Идеология application.volatile

Сообщение grim » 14.05.2009 (Чт) 23:20

Всем добрый день.
Все же VBA во многих местах повергает меня в задумчивость, к примеру не мог бы мне кто-нибудь пояснить идеологию такого метода как Apllication.Volatile
Я бы понял если бы UDF объявлялся с признаком волатильности, но по сути эксель должен вызвать функцию, просмотреть ее на предмет наличия аттрибута Application.Volatile и в случае его отсуствия не выполнять остальной код?
Например код

Function myfunc()
myfunc = Rnd
Exit Function
Application.Volatile
End Function

не делает функицю myfunc самопересчитывающейся, т.е. фактически интерпритатор вынужден просмотривать весь код чтобы определить обрабатывать функцию или нет и следовательно сложные UDF в любом случае будут сильно тормозить, даже если не являются волатильными? Прав ли я?

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

Re: Идеология application.volatile

Сообщение alibek » 15.05.2009 (Пт) 7:35

Скорее всего этот флаг проверяется не при каждом обращении к функции, а только один раз, при компиляции кода.
Lasciate ogni speranza, voi ch'entrate.

grim
Начинающий
Начинающий
 
Сообщения: 13
Зарегистрирован: 25.07.2005 (Пн) 9:33

Re: Идеология application.volatile

Сообщение grim » 15.05.2009 (Пт) 11:00

а разве VBA компилирует код? Я почему то думал что он всегда его интерпретирует on the fly

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

Re: Идеология application.volatile

Сообщение alibek » 15.05.2009 (Пт) 11:09

Ну не в exe-файл, конечно, но компилирует.
Lasciate ogni speranza, voi ch'entrate.


Вернуться в VBA

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 19

    TopList  
cron