Const mes1 = "Если объект Range, переданный "
'правильный результат. Ее результат в этом случае - #ЗНАЧ.
'также не приводит к успеху. В этом случае и функция не возвращает
'Попытка явного изменения значений ячеек рабочего листа
'Однако заметьте, это изменение не затрагивает ячеек рабочего листа!
'Побочным эффектом является изменение параметра Y, переданного по ссылке.
ПобочныйЭффект = X
'в качестве результата переданный ей параметр X.
'Также, как и ПравильнаяФункция данная функция возвращает
Public Function ПобочныйЭффект(X As Variant, ByRef Y As Variant) As Variant
ПравильнаяФункция = X
'то, естественно, функция должна вызываться в формуле над массивами.
'также является объектом Range. Если передается и возвращается массив,
'Range - отдельная ячейка или диапазон. Возвращаемый результат
'При вызове функции в формуле рабочего листа ей может быть передан объект
В этой главе я продолжу рассмотрение задач, которые входят в сферу традиционного образования прикладных математиков и, обычно, даются при изучении программирования. Возможно, задачи этой главы потребуют чуть большей математической подготовки. Основное внимание я буду уделять здесь решению этих задач программным путем, даже в тех случаях, когда их решение может быть получено с использованием встроенных стандартных функций. Но прежде, чем перейти к рассмотрению отдельных задач давайте рассмотрим несколько вопросов, проясняющих семантику вычислений в Excel. Я хочу рассмотреть некоторые особенности пользовательских функций - функций, написанных на VBA и вызываемых в формулах рабочего листа Функции с побочным эффектом и неявная передача данныхВозможность написать функцию с побочным эффектом или неявной передачей данных является одной из основных причин вычисления всех пользовательских функций при пересчете электронной таблицы. Давайте приведем примеры, проясняющие ситуацию. С этой целью я написал три функции:ПравильнаяФункция( X As Variant) As Variant. Это пример хорошей, правильно построенной функции. Через параметр X ей передается значение некоторой ячейки рабочего листа (объект Range ). В качестве результата она возвращает значение функции,- в нашем примере результат является копией входного параметра X.ПобочныйЭффект(X As Variant, Y As Variant) As Variant. В данной функции помимо вычисления результата изменяется и значение параметра Y. Поскольку по умолчанию параметр передается по ссылке ( By Ref ), то это должно было бы привести к побочному эффекту и изменить содержимое ячейки рабочего листа, переданной в качестве параметра Y. Мы увидим, что этого, однако, не происходит.НеявнаяПередача(X As Variant) As Variant В данной функции результат зависит не только от входного параметра X, но и от значения другой, неявно используемой ячейки рабочего листа.Вот как выглядят описания наших функций:Public Function ПравильнаяФункция(X As Variant) As Variant
Excel для математиков: версия для печати и PDA
Основы офисного программирования и документы Excel
Интернет-Университет Информационных Технологий
INTUIT.ru::Интернет-Университет Информационных Технологий
Комментариев нет:
Отправить комментарий