Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лабораторные по word и excel.doc
Скачиваний:
25
Добавлен:
22.12.2018
Размер:
1.66 Mб
Скачать

Назначение кнопки или графического объекта для запуска макроса.

  1. Щелкните кнопку или графический объект, чтобы появились маркеры изменения размера.

  2. Выделив этот объект, щелкните правой кнопкой мыши его маркер изменения размера, чтобы вызвать контекстное меню.

  3. Выберите в контекстном меню команду Назначить макрос.

Чтобы назначить ранее записанному макросу выбранный графический объект, введите название макроса в поле Имя макроса, а затем нажмите кнопку OK.

Чтобы создать новый макрос и назначить ему выбранный графический объект, нажмите кнопку Запись

Создание пользовательской функции.

Пользовательские функции

Несмотря на то, что Microsoft Excel содержит множество встроенных функций, часто возникает необходи­мость в вычислениях, для которых нет подходящей функции.

Пользовательские функции или функции, определяемые пользователем (.userdefined functions), являются одной из самых новых и привлекательных особенностей Microsoft Excel. Чтобы создать пользовательскую функцию, вы должны написать специальную процедуру Visual Basic, называемую процедурой-функцией (function рrосеdure) или просто функцией, которая получает информацию из рабочего листа, выполняет вычисления и затем возвращает результат в рабочий лист. Типы обрабатываемой информации и вычислительные задачи, которые можно упростить или обобщить с помощью пользовательских функций, практически невозможно перечислить.

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

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

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

Создание пользовательской функции.

Создание пользовательской функции включает в себя два этапа. Сначала создайте новый или откройте существующий модуль, в котором вы хотите поместить исходный текст программы Visual Basic, определяющей пользователь­скую функцию. Затем введите ряд инструкций Visual Basic для вычисления значения, которое вы хотите вернуть в рабочий лист.

Создадим для примера простую пользовательскую функцию. Предположим, что фирма предлагает торговую скидку 10 процентов, если заказано больше 100 саженцев одного сорта..

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

1. Создайте новый модуль в рабочей книге, выбрав в меню Сервис команду Макрос и затем — Редактор Visual Basic В меню Вставка (Insert) редактора Visual Basic выберите команду Модуль (Module). Excel откроет пустой модуль

2. Присвойте модулю имя. Для этого в окне проекта щелкните на элементе Модуль1. В окне свойств дважды щелкните в поле Имя (Name), чтобы выделить его содержимое, введите SalesFncs и нажмите клавишу Enter. Имя модуля измените

3. Переключитесь в переименованный модуль и введите в нем инструкции Visual Basic для пользовательской функции. В данном примере введите следующие инструкции, используя для получения отступов клавишу Tab:

Function Скидка1(количество, цена)

If количество >= 100 Then

Скидка1 = количество * цена * 0.1

Else

Скидка1 = 0

End If

Скидка1 = Application. Round(Скидка, 2)

End Function

Ввод в модуле процедуры с ключевым словом Function определяет функцию (в данном случае с именем Скидка) и делает ее доступной для любого открытого листа. При вводе текста программы Visual Basic вы увидите, что Excel выделяет разные термины различным цветом в зависимости от их назначения для облег­чения чтения и понимания работы функции.

После нажатия Enter в конце строки Excel выполняет простую проверку синтак­сиса введенной инструкции. При обнаружении опечатки или неправильного использования ключевого слова Visual Basic на экран выводится сообщение, поясняющее характер ошибки. Многие из этих сообщений вам будут пока непонятны, поэтому просто введите текст точно в том виде, в котором он приведен в книге.

Применение пользовательских функций.

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

=Скидка(С9;D9)

Обратите внимание, что в формуле не надо указывать модуль, содержащий процедуру-функцию. В качестве первого аргумента функции (количество) указана ячейка С9, содержащая количество заказанных саженцев. Ячейка D9, содержащая цену, задается вторым аргументом — цена. Когда вы закончите ввод и нажмете Enter, Microsoft Excel вычислит и возвратит значение скидки для заданных аргументов: $950,00.

Правила создания и применения пользовательских функций.

Наш пример иллюстрирует основные характеристики пользовательских функ­ций. Во-первых, они должны начинаться инструкцией Function и заканчиваться инструкцией End Function. При этом не требуется явно указывать, что макрос является пользовательской функцией, и определять ее имя. В модуле Visual Basic достаточно указать имя пользовательской функции в инструкции Function. Кроме имени функции, инструкция Function почти всегда имеет по крайней мере один аргумент, заключенный в круглые скобки. Позволяется задавать до 29 аргументов, разделяя их запятыми. (Можно создать функцию, которая не использует данные рабочего листа, но возвращает значение, например текущее время и дату в виде отформатированной текстовой строки.)

Во-вторых, пользовательская функция содержит одну или несколько инструк­ций Visual Basic, выполняющих вычисления на основе значений аргументов функции. Чтобы возвратить результат вычислений формуле, включающей в себя пользовательскую функцию, нужно присвоить результат переменной, имя кото­рой совпадает с именем этой функции.

В-третьих, вы можете применять только те пользовательские функции, которые находятся в модулях открытых книг. Если вы закроете книгу с пользовательской функцией, которая применяется в формуле в открытом листе, то эта функция возвратит ошибочное значение #ССЫЛКА! (#REF!). Чтобы получить правиль­ное значение, снова откройте книгу, содержащую модуль, в котором определена пользовательская функция.

Документирование макросов и пользовательских функций.

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

Добавление комментариев, подобных этим, впоследствии облегчит внесение изменений в процедуру Скидка.

Excel игнорирует все, что находится в строке после апострофа, поэтому вы можете поместить комментарий справа от инструкции Visual Basic. Вы также можете вставлять комментарии между инструкциями в макросе или пользователь­ской функции. Например, можно начать относительно длинный фрагмент текста программы с комментария, описывающего назначение этого фрагмента, и затем использовать построчные комментарии для пояснения отдельных инструкций.

Другим способом документирования макросов и пользовательских функций является использование описательных имен.

Например, вместо имени макроса Заголовки вы можете назвать его ОтнЗаголовкиМесяцев, где Отн означает, что макрос использует относительные ссылки, а ЗаголовкиМесяцев описывает тип заголовков, которые создает макрос. Использование описательных имен макро­сов и пользовательских функций является просто необходимым при создании большого числа процедур, особенно в том случае, когда созданные процедуры имеют схожее, но не идентичное назначение.

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

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

С другой стороны, не делайте имена пользовательских функций слишком краткими. Например, не стоит называть упомянутую выше функцию просто Налог, потому что это имя не поясняет, какой тип налога вычисляется функцией. Кроме того, не давайте своим функциям имен, которые совпадают с ключевыми словами Visual Basic, например End и Function.

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