Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсовая / Источники / excel_2010_professionalnoe_programmirovanie_na_vba_RuLit_Me_412629.pdf
Скачиваний:
4
Добавлен:
27.09.2025
Размер:
22.97 Mб
Скачать

314

Часть III. Visual Basic for Applications

Описанные в этом разделе функции весьма просты. Для примера ниже приводится листинг функции X D A T E .

F u n c t io n X D A T E (у , m, d , O p t io n a l fm t A s I f I s M is s in g ( f m t ) T h e n fm t = " S h o r t XDATE = F o r m a t ( D a t e S e r ia l( y , m, d) ,

E n d F u n c t io n

S t r in g ) A s S t r i n g D a te "

fm t)

Ниже описываются аргументы функции X D A T E :

у — состоящий из четырех цифр год, находящийся в диапазоне от 0100 до 9999;

m — номер месяца (1—12);

d — номер дня (1-31);

fmt (необязательно) — строка форматирования даты.

Если аргумент fm t не указан, отображение даты осуществляется в формате короткой даты, установленном в системе (на панели управления Windows).

Если аргумент m или d превышает допустимое значение, происходит переход к сле­ дующему году или месяцу. Например, если указать месяц с номером 13, он будет интер­ претироваться как январь будущего года.

Компакт-диск

Код VBA для расширенных функций по работе с датами находится на прила­ гаемом к книге компакт-диске в файле e x te n d e d d a t e f u n c t io n . x ls m . Здесь же можно найти инструкции по работе с этими функциями — в файле e x te n d e d d a t e f u n c t io n s h e lp . d o c x .

Отладка функций

При использовании формулы на рабочем листе для тестирования функции происхо­ дящие в процессе выполнения ошибки не отображаются в знакомом диалоговом окне сообщений. Формула просто возвращает значение ошибки (#ЗНАЧ!). К счастью, это не представляет большой проблемы при отладке функций, так как всегда существует не­ сколько “обходных путей”.

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

Протестировать функцию, вызвав ее из процедуры, а не в формуле рабочего листа. Ошибки в процессе выполнения отображаются обычным образом, поэтому можно либо сразу решить проблему (если она вам известна), либо перейти к отладке.

Определить точку остановки в функции и просмотреть функцию пошагово.

При этом можно воспользоваться всеми стандартными инструментами отладки. Чтобы добавить точку остановки, поместите курсор в операторе, в котором вы ре­ шили приостановить выполнение, и выберите команду Debug^Toggle Breakpoint (Отладка^Точка остановки) (или нажмите <F9>).

Глава 10. Создание функций

317

Ниже приводится пример процедуры, которая использует метод M acroO ptions для указания необходимых сведений о функции.

Sub D e s c r ib e F u n c t io n ()

Dim

FuncNam e

A s

S t r i n g

Dim

F u n c D e s c

A s

S t r i n g

Dim

F u n c C a t

A s

L o n g

Dim

A r g lD e s c

A s

S t r in g , A rg 2 D e s c A s S t r i n g

FuncName

=

"D ra w "

 

 

 

Fu n cD e sc

=

"С одерж им ое

с л у ч а й н о й

я ч е й к и

д и а п а з о н а "

F u n cC a t

= 5

' С сы л ки и

м а сси в ы

 

 

A r g lD e s c = "Д и а п а з о н , к о то р ы й со д е р ж и т з н а ч е н и я "

A rg 2 D e sc

=

" (Не о б я з а т е л ь н о ) Е с л и

F a ls e

и ли о т с у т с т в у е т , _

 

 

н о в о й я ч е й к и н е т "

 

 

A rg 2 D e sc

=

A rg 2 D e s c

& "в ы б р а н о п ри п е р е с ч е т е . Е сл и T r u e , "

A rg 2 D e sc

=

A rg 2 D e s c

& "в ы б р а н а н о в а я я ч е й к а при п е р е с ч е т е ."

A p p lic a t io n . M a c r o O p t io n s _

M a c r o : = FuncN am e,

_

D e s c r ip t io n : = F u n c D e s c , _ C a t e g o r y : = F u n c C a t, _

A r g u m e n t D e s c r ip t io n s : = A r r a y ( A r g lD e s c , A rg 2 D e s c ) E n d Sub

Эта процедура использует переменные для хранения различной информации и в каче­ стве аргументов метода MacroOptions. Функция относится к категории 5 (ссылки и массивы). Обратите внимание, что описания для двух аргументов указываются путем применения массива в качестве последнего аргумента метода MacroOptions.

Новинка

Поддержка описаний аргументов появилась в Excel 2010. Если рабочая кни­ га открывается в более ранней версии Excel, описание аргументов не ото­ бражается.

На рис. 10.11 показаны диалоговые окна Мастер функций и Аргументы функции после вызова указанной выше процедуры.

Процедуру DescribeFunction следует вызывать только один раз. После ее вызова информация, связанная с функцией, сохраняется в рабочей книге. Можно также не ука­ зывать аргументы. Например, если для создания описаний аргументы не требуются, можно не обращать внимания на аргумент ArgumentDescript ions.

©

Дополнительные сведения о создании справки, доступной в окне Мастер

функций, можно найти в главе 24.

Определение категории функции

Если вы не укажете категорию функции с помощью метода MacroOptions, пользо­ вательская функция рабочего листа появится в категории Определенные пользовате­ лем (User Defined) диалогового окна Мастер функций (Insert Function). Иногда все же требуется поместить ее в другую категорию. Перемещение функции в другую категорию приведет ^появлению ее в соответствующем раскрывающемся списке группы Формулы^Библиотека функций (Formulas^Function Library).