Function s(x As Variant, y As Variant, b As Variant)
z1 = Application.WorksheetFunction.Sum(x)
z2 = Application.WorksheetFunction.SumSq(y)
z3 = Application.WorksheetFunction.Sum(b)
z4 = Application.WorksheetFunction.Sum(y)
s = (2 * z1 + 2 * z2 + 5 * z3 ^ 3) / (3 + z4)
End Function
Некоторые комментарии к программе:
– В программе используются промежуточные переменные z 1 – z 4;
– В программе можно ввести комментарии для каждой строки;
– Процесс отладки модуля можно выполнять по частям, для чего соответствующим образом изменять последний оператор присваивания, например s = z2.
После отладки программного модуля и внесения его в мастер функций fx, следует, находясь в ячейке G58, обратить через мастер функций fx , в данном случае к функции с именем s , рис. 6.7.
Так функция s ( X , Y , B ) от трех параметров, то в появившемся окне функции, рис. 6.13, в окне “X” указать адрес объекта (параметра) X – B46:E46, в окне “Y” указать адрес объекта (параметра) Y – B48:E48, а в окне “B” указать адрес объекта (параметра) B – G47:H48.
Рис. 6.13.
Затем одновременно нажать клавиши Ctrl-Shift-Enter.
В ячейке G58 появится ответ 549,625.
Таким образом, значение величины S для заданного примера, вычисленное в VBA , равно 549,625.
ОПЕРАТОРЫ ЦИКЛА
Целью лабораторной работы “Операторы цикла” является освоение грамматических конструкций VBA , обеспечивающих эффективную организацию циклических процессов.
Лабораторная работа “Операторы цикла” выполняется только в среде VBA.
При этом одна и та же разветвляющаяся функция G ( x ), из ранее выполненной лабораторной работы “Табулирование разветвляющейся функции”, табулируется на листе Excel семь раз с использованием семи различных конструкций операторов цикла:
|
|
– Do While … loop ;
– Do Loop … while ;
– Do Until … loop ;
– Do Loop … until ;
– While … wend ;
– For … next ;
– For Each … next .
Критерием правильности является совпадение полученных таблиц, рис. 7.1.
Выполнение этой лабораторной работы целесообразно начинать с копирования программного модуля VBA из лабораторной работы “Табулирование разветвляющейся функции”.
ПРОГРАММНЫЙ МОДУЛЬ VBA ИЗ ЛАБОРАТОРНОЙ РАБОТЫ “ТАБУЛИРОВАНИЕ РАЗВЕТВЛЯЮЩЕЙСЯ ФУНКЦИИ” СКОПИРОВАТЬ В МОДУЛЬ ПЕРВОГО ОБЪЕКТА CommandButton 1 ЛАБОРАТОРНОЙ РАБОТЫ “ОПЕРАТОРЫ ЦИКЛА”.
Внести изменения, соответствующие использованию грамматической конструкции Do While … loop .
Убедиться в правильности функционирования
ПРОГРАММНЫЙ МОДУЛЬ VBA ПЕРВОГО ОБЪЕКТА CommandButton 1 СКОПИРОВАТЬ В МОДУЛЬ ВТОРОГО ОБЪЕКТА CommandButton 2.
Внести изменения, соответствующие использованию грамматической конструкции Do Loop … while .
Убедиться в правильности функционирования
Последовательно повторить эти операции для всех видов операторов цикла, то есть до конструкции For Each … next включительно.
|
|
Рис. 7.1.
Программы табулирования разветвляющейся функции в V ВА с использованием операторов цикла
Private Sub CommandButton1_Click()
Dim i As Integer
Dim j As Integer
Dim x As Double
Dim w As String
w = InputBox("w =", " очистить диапазон ? - (Y,y, Д , д )/N")
If (w = "Y") Or (w = "y") Or (w = " Д ") Or (w = " д ") Then Range(Cells(7, 1), Cells(28, 3)) = Clear
xn = InputBox("xn =", "Введите начало диапазона", -3)
xk = InputBox("xk =", "Введите конец диапазона", 7)
xd = InputBox("xd =", "Введите шаг изменения переменной", 0.5)
i = InputBox("i =", "Введите начало таблицы, строку", 7)
j = InputBox("j =", "Введите начало таблицы, столбец", 1)
Cells(i, j) = "X": Cells(i, j + 1) = "G1": Cells(i, j + 2) = "G2"
i = i + 1
x = xn
Do While x <= xk
Cells(i, j) = Format(x, "0.0#")
If x <= 0 Then
Cells(i, j + 1) = Format(g(x), "#0.0###")
Else
Cells(i, j + 2) = Format(g(x), "#0.0###")
End If
x = x + xd: i = i + 1
Loop
End Sub
Дата добавления: 2019-03-09; просмотров: 266; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!