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; Мы поможем в написании вашей работы!

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






Мы поможем в написании ваших работ!