Всё сдал! - помощь студентам онлайн Всё сдал! - помощь студентам онлайн

Реальная база готовых
студенческих работ

Узнайте стоимость индивидуальной работы!

Вы нашли то, что искали?

Вы нашли то, что искали?

Да, спасибо!

0%

Нет, пока не нашел

0%

Узнайте стоимость индивидуальной работы

это быстро и бесплатно

Получите скидку

Оформите заказ сейчас и получите скидку 100 руб.!


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

Тип Реферат
Предмет Информатика
Просмотров
452
Размер файла
200 б
Поделиться

Ознакомительный фрагмент работы:

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

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


Функция пользователя

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

Для вызова редактора VBA задайте команду Сервис - Макрос - Редактор Visual Basic или нажмите комбинацию клавиш Alt+F11. В результате пользователь попадает в интегрируемую среду приложений IDE редактора Visual Basic. Она имеет стандартный вид для Windows-приложений:

строка меню,

панель инструментов (в данном случае Standart),

два окна Project – VBAProject и Properties.

В окне Project – VBAProject отображается реестр модулей и форм, входящих в создаваемый проект.

Модуль - это лист (не путать с рабочим листом), в котором набирается код.

Двойным щелчком на значке модуля в окне Project – VBAProject можно открыть соответствующий модуль. Значок активного модуля в окне Project – VBAProject выделяется серым цветом.

В VBA у каждого рабочего листа имеется собственный модуль. Кроме того, рабочая книга обладает своим, и если в проекте создаются пользовательские формы, то каждая из них имеет по модулю. В проекте также можно добавлять модули классов для описания создаваемых пользовательских классов (эти модули будут рассмотрены позже). Единый модуль, который нам необходим, - это стандартный модуль. Для того чтобы его добавить в проект, выберите команду Insert-Module.

Структура кода функции пользователя

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

Function имя_функции (список_аргументов)

[инструкции]

End Function

где

имя_функции – имя создаваемой функции, придуманное пользователем;

список_аргументов – список аргументов;

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

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

Примечание. Разрешается досрочный выход из функции по инструкции Exit Function. В теле функции может располагаться несколько инструкций Exit Function.

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

Рассмотрим построение простой функции, которая возвращает стоимость товара по его стоимости без НДС и значению ставки НДС.

Вызовите редактор VBA командой Сервис - Макрос - Редактор Visual Basic или комбинацией клавиш Alt+F11. Добавьте в проект стандартный модуль командой Insert - Module. В окне модуля наберите код, представленный в листинге 1.

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

Function Стоимость (СтоимостьБезНДС, НДС)

Стоимость = СтоимостьБезНДС * (1 + НДС / 100)

End Function

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

К созданной пользовательской функции можно обратиться через Мастер функций. По умолчанию она попадает в раздел Определенные пользователем списка Категория окна Мастера функций. Используем созданную функцию для определения стоимости товара с учетом НДС при условии, что НДС равен, например, 25 %, а стоимость товара без учета НДС равна 1000.

Алгоритм применения функции пользователя

Разместите данные, необходимые для решения задачи, на рабочем листе как показано на рисунке:


В ячейку А2 введите число 1000 (стоимость без НДС), а в ячейку В2 - число 25 (НДС).

Для определения значения стоимости товара с учетом НДС переместите табличный курсор в ячейку С2 и вызовите Мастер функций (например, командой Вставка - Функция).

В окне Мастера функций в списке Категория найдите значение Определенные пользователем, затем в списке Функция выберите функцию Стоимость и подтвердите свой выбор щелчком по командной кнопке ОК.

В появившемся окне функции Стоимость в полях СтоимостьБезНДС и НДС задайте ссылки на ячейки А2 и В2 с исходными данными для этих аргументов (щелкните левой кнопкой мыши по соответствующим ячейкам, чтобы не набирать вручную с клавиатуры их адреса) и нажмите командную кнопку ОК.

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

Результат вычисления

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

Необходимо создать функцию определения суммы заработной платы сотрудника за отработанные дни. Аргументами функции являются: величина месячного оклада сотрудника, количество рабочих дней в месяце, количество отработанных сотрудником дней. Добавьте в проект стандартный модуль командой Insert - Module. В окне модуля наберите код, представленный в листинге 2.

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

Function Зар_плата_отраб_время (Оклад, РабДни, ОтрабДни)

Зар_плата_отраб_время = Оклад / РабДни * ОтрабДни

End Function

Алгоритм применения функции пользователя

Разместите данные, необходимые для решения задачи, на рабочем листе как показано на рисунке:

Переместите табличный курсор в ячейку Е2 и вызовите Мастер функций, в окне Мастера функций в списке Категория выберите пункт Определенные пользователем, затем в списке Функция - функцию Зар_плата_отраб_время и подтвердите свой выбор щелчком по командной кнопке ОК. В появившемся окне функции Зар_плата_отраб_время в полях Оклад, РабДни и ОтрабДни задайте ссылки на ячейки В2, С2 и D2 с исходными данными для этих аргументов и нажмите командную кнопку ОК:


Результат вычисления

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

Математические функции

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


Таблица 1. Встроенные математические функции VBA

Функция

Возвращаемое значение

Abs (number)

абсолютная величина (модуль) числа

Atn (number)

арктангенс

Cos (number)

косинус

Exp (number)

экспонента ех (результат возведения основания натурального логарифма в указанную степень)

Log (number)

натуральный логарифм

Rnd (number)

случайное число между 0 и 1. Если аргумент number меньше нуля, то функция Rnd возвращает каждый раз одно и то же число. Если number больше нуля или опущено, то Rnd возвращает следующее случайное число в последовательности. Если number равняется нулю, то Rnd возвращает случайное число, полученное при предыдущем вызове этой функции. Перед вызовом функции Rnd используйте оператор Randomize.

Sgn (number)

знак числа (возвращает 1, если аргумент является положительным; -1, если аргумент - отрицательный; 0, если аргумент равен нулю)

Sin (number)

синус

Sqr (number)

квадратный корень из числа

Tan (number)

тангенс

Fix (number)

Int (number)

обе функции Fix, Int отбрасывают дробную часть числа и возвращают целое значение. Различие между данными функциями состоит в том, что для отрицательного значения параметра число функция Int возвращает ближайшее отрицательное целое число, меньшее либо равное указанному, а Fix – ближайшее отрицательное целое число, большее либо равное указанному.

Создадим пользовательскую функцию:

.

В новом стандартном модуле наберите код, представленный в листинге 3.

Листинг 3. Пользовательская функция с использованием встроенной математической функции

Function F(x)

Pi = Atn (1) * 4

F = Cos (Pi * x) ^ 2

End Function

В VBA нет функции, возвращающей число П ("пи"), поэтому оно определяется через функцию Ant (арктангенс): Pi = 4 * Atn (1). Число П можно задать явно, указав достаточное число значащих цифр, но этот подход менее элегантен, чем с помощью функции Ant.

Алгоритм применения функции пользователя

Разместите данные, необходимые для решения задачи, на рабочем листе (как показано на рисунке) и с помощью Мастера функций вызовите новую функцию:

Оператор условного перехода

Оператор условного перехода задает выполнение определенных групп инструкций в зависимости от значения выражения.

Синтаксис:

If condition Then [statements ] [ Else elsestatements ]


Если условие condition принимает значение True, то выполняются инструкции statements, если False, то инструкции elsestatements. Ветвь Else является необязательно.

Например, если скидка (скажем 50%) применяется только к суммам больше 10001, то в VBA это можно записать следующим образом:

If Money > 1000 Then Discount = 0.05 Else Discount = 0

или, что равносильно

If Money > 1000 Then Discount = 0.05

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

If condition Then

[statements ]

[ Else

[elsestatements ]]

End If

Приведенный выше пример со скидкой можно записать в следующей эквивалентной блочной структуре:

If Money > 1000 Then

Discount = 0.05

Else

Discount = 0

End If

или

If Money > 1000 Then

Discount = 0.05

End If

Дерево условий может оказаться гораздо более сложным, чем просто проверка одного условия. В этом случае оператор If….Then….ElseIf, который позволяет проверять множественные условия. Следующий пример показывает порядок проверки условий.

If condition-1 Then

[Statements]

[ElseIf condition-2 Then

[elseifstatements]

[Else

[elsestatements]]

End If

Первым поверяется условие condition-1. Если оно имеет значение True, то выполняются инструкции Statements и далее работа программы продолжится со строки, которая следует за ключевым словом End If. Если условие condition-1 возвращает значение False, то проверяется условие condition-2 и т.д., пока не встретится условие, возвращающее значение True, или не встречается ключевое слово Else.

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

Посмотрим для функции в стандартном модуле пользовательскую функцию (листинг 3).

Листинг 4. Пользовательская функция с двумя условиями (вариант 1).

Function Y(x)

If x < 0.5 Then

Y=(1+Abs(0.2-x))/(1+x+x^2)

Else

Y=x^(1/3)

End If

End Function

Конечно, ту же самую можно было бы запрограммировать с использованием двух операторов If. Но хотя этот код содержит меньше строк, он менее предпочтительнее (листинг 4).


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

Создадим в стандартном модуле пользовательскую функцию (листинг 5).для функции

Листинг 5. Пользовательская функция с двумя условиями (вариант 1).

Function Z(x)

Select case x

Case Is < 0.2

Z=1+ Log(1 + Abs(x))

Case Is <= 0.8

Z=(1+x^(1/2))/(1+x)

Case Else

Z=2*Exp(-2*x)

End Select

End Function

Эту функцию можно запрограммировать с использованием оператора If.

Листинг 6. Пользовательская функция с двумя условиями (вариант 2).


Function функцияZ1(x)

If x < 0.2 Then

функцияZ1 = 1 + Log(1 + Abs(x))

ElseIf x > 3.8 Then

функцияZ1 = 2 * Exp(-2 * x)

Else

функцияZ1 = (1 + x ^ (1 / 2)) / (1 + x)

End If

End Function

Область видимости переменной

В программе все идентификаторы (в частности, имена переменных и функций) имеют определенную область видимости (scope). Область видимости переменной определяет ту область кода, которая "знает" о существовании данной переменной.

Переменная, объединенная внутри функции, не может быть использована или обнаружена вне данной функции. Это означает, что пользователь может использовать то же самое имя переменной в другой функции, и VBA не перепутает их.

Таким образом, для каждой из рассмотренных выше функций нет нужды создавать свой стандартный модуль.

Их все можно расположить в одном модуле, и VBA не запутается.

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


Примечание. Редактор Visual Basic для облегчения визуального развития местоположения функций в модуле создает между ними разделительные линии. Для того чтобы эти разделительные линии отображались на экране, выберите команду Tools - Options. На экране отобразится диалоговое окно Options. На вкладке Editor в группе Window Settings установите флажок Procedure Separator.

Расчет комиссионных

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

Объем продаж за неделю, руб.

Комиссионные, %

от 0 до 9999

8

от 10000 до 19999

10

от 20000 до 39999

12

Более 40000

14

Построим для расчета комиссионных в стандартном модуле пользовательскую функцию (листинг 7).

Листинг 7. Расчет комиссионных

Function Комиссионные1(Продажи)

If Продажи <= 9999 Then

Комиссионные1 = Продажи * 0.08

ElseIf Продажи <= 19999 Then

Комиссионные1 = Продажи * 0.1

ElseIf Продажи <= 39999 Then

Комиссионные1 = Продажи * 0.12

Else

Комиссионные1 = Продажи * 0.14

End If

End Function

Усложним задачу. Будем считать, что комиссионные зависят от ставки, занимаемой менеджером. Если он принят в постоянный штат фирмы, то комиссионные начисляются по описанному выше закону. Если же он находится на испытательном сроке, то его комиссионные составляют 75% от номинала.

Для решения этой задачи к функции Комиссионные1 надо добавить еще один аргумент – Ставка, который и идентифицирует ставку менеджера. Если менеджер находится на испытательном сроке, то значение аргумента Ставка полагается равным 0, а если он зачислен в постоянный штат, то значение аргумента Ставка полагается равным 1. Тогда, функция Комиссионные2 примет вид, представленный в листинге 8.


Листинг 8. Расчет комиссионных с учетом ставки менеджера

Function Комиссионные2(Продажи, Ставка)

Select Case Продажи

Case Is <= 9999

Оплата = Продажи * 0.08

Case Is <= 19999

Оплата = Продажи * 0.1

Case Is <= 39999

Оплата = Продажи * 0.12

Case Else

Оплата = Продажи * 0.14

End Select

If Ставка = 0 Then

Комиссионные2 = 0.75 * Оплата

Else

Комиссионные2 = Оплата

End If

End Function


1 Здесь и далее, если не указана денежная единица, то имеются в виду некие условные единицы.


Нет нужной работы в каталоге?

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

Цены ниже, чем в агентствах и у конкурентов

Вы работаете с экспертами напрямую. Поэтому стоимость работ приятно вас удивит

Бесплатные доработки и консультации

Исполнитель внесет нужные правки в работу по вашему требованию без доплат. Корректировки в максимально короткие сроки

Гарантируем возврат

Если работа вас не устроит – мы вернем 100% суммы заказа

Техподдержка 7 дней в неделю

Наши менеджеры всегда на связи и оперативно решат любую проблему

Строгий отбор экспертов

К работе допускаются только проверенные специалисты с высшим образованием. Проверяем диплом на оценки «хорошо» и «отлично»

1 000 +
Новых работ ежедневно
computer

Требуются доработки?
Они включены в стоимость работы

Работы выполняют эксперты в своём деле. Они ценят свою репутацию, поэтому результат выполненной работы гарантирован

avatar
Математика
История
Экономика
icon
149606
рейтинг
icon
3150
работ сдано
icon
1362
отзывов
avatar
Математика
Физика
История
icon
144633
рейтинг
icon
5915
работ сдано
icon
2670
отзывов
avatar
Химия
Экономика
Биология
icon
99719
рейтинг
icon
2057
работ сдано
icon
1282
отзывов
avatar
Высшая математика
Информатика
Геодезия
icon
62710
рейтинг
icon
1046
работ сдано
icon
598
отзывов
Отзывы студентов о нашей работе
57 426 оценок star star star star star
среднее 4.9 из 5
Миит
Быстро, качественно, претензий нет! Рекомендую! Очень вежливый и приятный автор
star star star star star
ИГХТУ
Все выполнено быстро и грамотно,давно работаю с исполнителем,ни разу не подводила,и делала...
star star star star star
СПБ ГУТ
Спасибо за проделанный труд. Поставили отлично?. Приятный исполнитель, всем рекомендую.?
star star star star star

Последние размещённые задания

Ежедневно эксперты готовы работать над 1000 заданиями. Контролируйте процесс написания работы в режиме онлайн

Для каждого проектируемого здания все пункты по...

Диплом, строительство

Срок сдачи к 7 февр.

1 минуту назад

вариант №8

Контрольная, Теоретическая механика

Срок сдачи к 8 янв.

5 минут назад
6 минут назад

Необходимо сделать задачу. Вариант №2

Решение задач, Оборудование заводов по производству и переработке пластмасс

Срок сдачи к 26 янв.

7 минут назад

Вариант 13, Задания под номерами: 1,2,4,6,7,8,9,10,11

Решение задач, Статистика для менджеров

Срок сдачи к 5 янв.

9 минут назад

Курсовая работа

Курсовая, сельскохозяйственные машины

Срок сдачи к 4 янв.

12 минут назад

Практическое задание

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

Срок сдачи к 4 янв.

12 минут назад

Тема: «Методические особенности организации учебно-исследовательской...

Курсовая, Инновационные процессы в математическом образовании

Срок сдачи к 7 янв.

12 минут назад

Тема диплома «моталка сортового стана. Стан 250»

Диплом, Технологические машины и оборудование

Срок сдачи к 20 янв.

12 минут назад

Расчетно-графическая работа по ТОЭ

Решение задач, теоретические основы электротехники

Срок сдачи к 7 янв.

12 минут назад

Доделать срочно

Курсовая, Проектирование Систем Автоматизации

Срок сдачи к 12 янв.

12 минут назад

Творческое задание

Другое, Геометрия

Срок сдачи к 6 янв.

12 минут назад

Нужно сделать дипломный проект на основе двух курсовых

Диплом, Ремонт и обслуживание легковых автомобилей

Срок сдачи к 10 янв.

12 минут назад

1. перевод с естественного языка на язык лв или лппп (уч.клини стр

Ответы на билеты, логика и теория аргументации

Срок сдачи к 3 янв.

12 минут назад

"Права и обязанности родителей и детей", 21-25 страниц

Курсовая, Обществознание

Срок сдачи к 16 янв.

12 минут назад

Необходимо сделать задачу .Вариант №2

Решение задач, Оборудование заводов по производству и переработке пластмасс

Срок сдачи к 26 янв.

12 минут назад
planes planes
Закажи индивидуальную работу за 1 минуту!

Размещенные на сайт контрольные, курсовые и иные категории работ (далее — Работы) и их содержимое предназначены исключительно для ознакомления, без целей коммерческого использования. Все права в отношении Работ и их содержимого принадлежат их законным правообладателям. Любое их использование возможно лишь с согласия законных правообладателей. Администрация сайта не несет ответственности за возможный вред и/или убытки, возникшие в связи с использованием Работ и их содержимого.

«Всё сдал!» — безопасный онлайн-сервис с проверенными экспертами

Используя «Свежую базу РГСР», вы принимаете пользовательское соглашение
и политику обработки персональных данных
Сайт работает по московскому времени:

Вход
Регистрация или
Не нашли, что искали?

Заполните форму и узнайте цену на индивидуальную работу!

Файлы (при наличии)

    это быстро и бесплатно