Мир объектов Excel 2000

Пользовательские функции и массивы рабочего листа


Учитывая важность проблемы передачи массивов рабочего листа в пользовательскую функцию, кратко сформулируем основные выводы еще раз:

  • Пользовательская функция, вызываемая в формуле рабочего листа, может принимать один или несколько массивов в качестве своих входных параметров. Эти параметры должны иметь тип Variant.
  • На выходе функция может сформировать только один массив, который можно передать в рабочий лист. Этот массив не может быть значением одного из параметров функции - только результатом этой функции, т. е. побочный эффект не допускается. Всякая попытка вызвать функцию с побочным эффектом обнаруживается динамически (но не в период трансляции) и приводит к ошибке при вычислении результата.
  • Пользовательская функция, возвращающая массив рабочего листа, должна иметь тип Variant.

Ряд важных вопросов требует специального рассмотрения. Вот лишь некоторые:

  • Что собой представляют формулы, вызывающие пользовательские функции, когда те получают массивы рабочего листа как параметры, но их результатом является скаляр? Вызываются ли они как формулы с массивами или как обычные формулы?
  • Я уже сказал, что в пользовательскую функцию можно передать массив рабочего листа, для чего необходимо, чтобы соответствующий формальный параметр имел тип Variant. Но Variant является универсальным типом, а посему можно передавать не только отдельные ячейки и массивы. Что можно передавать в качестве фактического параметра, как при этом построить обработку? Ответы на эти вопросы я дам при рассмотрении следующей задачи.



Содержание раздела