Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Function v(h As Single, r As Single) As Single




v = 3.14 * h * r ^ 2

End Function

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

Например, ниже приведен фрагмент программы вычисления объема тела из двух поставленных друг на друга цилиндров высотой по 10 см и радиусами основания соответственно 3 и 5 см:

Dim vol As Single

vol = v(10, 3) + v(10, 5)

MsgBox «объем равен» & vol & «см3»

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

Дело в том, что когда по умолчанию значения формальных параметров передаются в процедуру по ссылке,то VBАдля них не отводит дополнительного места в памяти. Поэтому формальные параметры не являются настоящими переменными – это только ссылки на значения соответствующих переменных из вызывающей программы. Если же в ходе выполнения функции пользователя эти параметры меняют свои значения, то в итоге может быть получен неверный результат. Чтобы этого не произошло, используется передача формального параметра в процедуру по его значению с помощью записи ByVal перед именем параметра. В этом случае VBА будет хранить в памяти копию оригинала значения формального параметра как переменной и ее значения останутся неизменными после выполнения процедуры.

Например, заголовок функции может иметь следующий вид:

Function F(ByVal x As Single, n As Integer) As Single

Здесь объявляется функция F вещественного типа (Single), зависящая от двух аргументов: x вещественного типа (Single), передаваемого в процедуру по значению, и n − целочисленного типа (Integer), передаваемого в процедуру по ссылке.

Пример 7.1. Функция пользователя F (k) для расчета факториала числа k: k! = 1 * 2 * 3 * … * k.

Программа имеет вид:

Function F(k)

Dim i As Integer

F = 1

For i = 2 To k

F = F * i

Next i

End Function

Теперь для вычисления выражения С = М! N!/ (M + N)! можно использовать следующую программу:

Sub CommandButton1_Click()

Dim С As Single

Dim N As Integer, M As Integer

M = Val(InputBox("Введите М"))

N = Val(InputBox("Введите N"))

C = F(M) * F(N) / F(M + 1)

MsgBox C

End Sub

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

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

Для создания пользовательской функции листа нужно на листе редактора VBA выполнить команду Вставка/Модуль (Insert/Module) и написать функцию пользователя в появившемся окне.

Пример 7.2. Создать функцию, которая вычисляет значения sin(x), когда аргумент x представлен в градусах. Текст программы:

Function MySin(x As Single) As Single

'Определение константы

Const pi As Single = 3.14159

Dim y As Single

'Перевод значения x в радианы

y = (x / 180) * pi

MySin = Sin(y)

End Function

Вызов функции будет иметь вид, представленный на рисунке.

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





Поделиться с друзьями:


Дата добавления: 2016-11-23; Мы поможем в написании ваших работ!; просмотров: 361 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Логика может привести Вас от пункта А к пункту Б, а воображение — куда угодно © Альберт Эйнштейн
==> читать все изречения...

2285 - | 2212 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.011 с.