Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Excel_new.doc
Скачиваний:
97
Добавлен:
22.02.2015
Размер:
5.05 Mб
Скачать
    1. Функции

Функции - это процедуры, возвращающие результирующее значение в своем имени. Тип функции указывается после скобок.

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

В отличие от СИ процедура-функция не имеет оператора RETURN , поэтому в теле процедуры обязательно должен присутствовать оператор присвоения некоторого значения идентификатору функции.

В разрабатываемой процедуре можно использовать не только собственные функции или функции VB, но встроенные функции Excel. Все функции таблиц подключены к объекту Application. Например, в операторе n = Application.Min(n1, n2) используется функция Min() из библиотеки Excel.

Замечание. Для удобства пользователя в русскоязычных версиях Excel названия большинства функций переведены на русский язык. Однако в библиотеке Excel они имеют английские идентификаторы. Для того чтобы правильно написать имя функции, рекомендуем обратиться к файлу Funcs.xls или сначала записать в Excel на макрорекордере что-либо с обращением к требуемой функции, а затем прочитать и фрагментарно использовать записанный модуль.

      1. Передача массива

Массив констант заключается в фигурные скобки. Элементы массива записываются через запятую построчно. Разделители строк - точка с запятой. Например, массив их двух строк и трех столбцов записывается в виде{1,3,4; 2,4,3}.

Ссылка на область, например А2:С6, передается как объект Range. Соответствующий аргумент функции должен принадлежать к типу Variant. Массив станет объектом. Доступ к элементам массива осуществляется обычным способом - с помощью круглых скобок и индексов.

Пользовательской функции можно передавать и Excel-объекты (например, блоки ячеек). Доступ к отдельным элементам можно реализовать, например, с помощью метода Cells, но лучше использовать оператор цикла For Each. В приведенном ниже примере программа обрабатывает как массивы, так и отдельные блоки ячеек. Однако левая программа не может обрабатывать составные ссылки на области, например, А3:С8; В2:В8. Для этого нужно организовывать вложенные циклы, часто с проверкой, чем является элемент внутреннего цикла - объектом или массивом. В списке аргументов указывается ключевое слово ParamArray.

Function Multyply (Value)As Single

Dim Product As Single, Val

(Val имеет тип Variant)

Product=1

For Each Val in Value

Product= Product * Val

Next Val

Multyply= Product

End Function

Function Multyply(ParamArray Value()) As Single

Dim Product As Single, Val, Part

Product = 1

For Each Val In Value

For Each Part In Val

Product = Product * Part

Next Part

Next Val

Multyply = Product

End Function

Для проверки типа элемента часто используется функция TypeName(), например

If TypeName(Part)=”Range” Or Right(TypeName(Part),2)=”()” Then

Для передачи массива из функции в таблицу необходимо, чтобы функция возвращала тип Variant.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]