Подпрограмма-функция
Подобно подпрограмме-процедуре Sub, подпрограмма-функция Function является самостоятельной подпрограммой, которая может получать аргументы, выполнять последовательность инструкций и изменять значения своих аргументов. В отличие от подпрограммы-процедуры подпрограмма-функция может применяться в правой части выражения, как и любая другая встроенная функция, например косинус или синус угла. Подпрограмма-функция возвращает один результат и он должен быть присвоен имени этой функции.
Синтаксис:
[Public | Private] [Static] Function Имя [(Список аргументов)] As Тип
Тело подпрограммы
Имя = Выражение
End Function
Подпрограмма-функция вызывается в выражении по своему имени, за которым следует список аргументов в скобках:
Переменная = Имя подпрограммы-функции(Список аргументов)
Пример 1
Даны действительные числа s, t. Получить значение выражения
,
где
Программный код
Option Explicit
Sub PR31()
Dim s As Double
Dim t As Double
Dim f As Double
s = Val(InputBox("Введи s"))
t = Val(InputBox("Введи t"))
f = Q(1.2, s) + Q(t, s) – Q(2 * s – 1, s * t)
MsgBox("f=" & f)
End Sub
Private Function Q(ByVal a As Double, ByVal b As Double) As Double
Q = (a^2 + b^2) / (a^2 + 2 * a * b + 3 * b^2 + 4)
End Function
Пример 2
Известна заработная плата сотрудников двух отделов. Вычислить среднюю заработную плату сотрудников в каждом отделе и определить, где она больше и насколько.
Программный код
Option Explicit
Dim i As Integer ‘ Описание глобальных параметров
Sub PR32()
Dim x(1 To 100) As Double
Dim y(1 To 100) As Double
Dim N As Integer
Dim M As Integer
Dim Sz1 As Double
Dim Sz2 As Double
N = Val(InputBox("Введите количество сотрудников 1-го отдела"))
M = Val(InputBox("Введите количество сотрудников 2-го отдела"))
Sz1 = Sz(N, x, 2)
Sz2 = Sz(M, y, 4)
MsgBox("Средняя зарплата сотрудников 1-го отдела =" & Sz1)
MsgBox("Средняя зарплата сотрудников 2-го отдела =" & Sz2)
If Sz1 > Sz2 Then MsgBox("В 1-м отделе средняя зарплата больше")
If Sz2 > Sz1 Then MsgBox("Во 2-м отделе средняя зарплата больше")
If Sz1 = Sz2 Then MsgBox("Средняя зарплата в отделах одинакова")
End Sub
Private Function Sz(ByVal k As Integer, ByRef a() As Double, ByVal k1 As Integer) As Double
Dim s As Double ‘ описание промежуточной переменной
s = 0
For i = 1 To k ‘ считывание данных и заполнение массива
A(i) = Cells(k1, i)
s = s + a(i) ‘ вычисление общей суммы
Next i
Sz = s / k ‘ вычисление средней зарплаты
End Function
Дата добавления: 2015-11-20; просмотров: 503;