Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Сборник описаний лабораторных по VBA.doc
Скачиваний:
8
Добавлен:
10.11.2018
Размер:
737.28 Кб
Скачать

23

Лабораторная работа

ЯЗЫК ПРОГРАММИРОВАНИЯ

VISUAL BASIC FOR APPLICATIONS (VBA)

Время выполнения 12 часов.

Цель работы

Научиться использовать этот язык для написания модулей в приложении VISUAL BASIC FOR APPLICATIONS (VBA) для EXCEL.

Задачи лабораторной работы

После выполнения данной работы студент должен:

1. Знать все операторы, используемые в программах.

2. Уметь применять любые из изученных операторов для написания своих модулей.

3. Уметь объяснить написанную программу.

Перечень обеспечивающих средств

Для обеспечения выполнения работы необходимо иметь компьютер со следующим математическим обеспечением: операционная система WINDOWS XP, электронные таблицы EXCEL с приложением в виде языка VISUAL BASIC FOR APPLICATIONS.

Общие теоретические сведения

1. Решение задач на линейный процесс

Для решения задач необходимо уметь переводить функции arcsin x,

arccos x, arcctg x через arctg х, т.к. данных функций нет в VBA.

Формулы для перехода к arctg(x) приведены ниже:

Arcsin x = arctg ; Arccos x = /2 - arctg ; Arcctg x =/2 – arctg x

Решим задачу на линейный процесс с использованием операторов присваивания для задания значений переменным.

Пример 1. Вычислить значение с, если значения переменных a и b заданы.

Sub Main()

Dim a, b, c As Single

a=2: b:=3:c=a^2+sqr(b)

MsgBox “c=”&CStr(c)

End Sub

Вычислить z в следующих уравнениях самостоятельно:

2. РЕШЕНИЕ ЗАДАЧ НА РАЗВЕТВЛЯЮЩИЙСЯ ПРОЦЕСС

Задача №1. Написать программу вычисления у по заданным а и х

Sub Main()

Dim х, а, у Аs single

х = InputBox("введите значения для х с клавиатуры")

а = InputBox ("введите значения для а с клавиатуры")

If х < -а Тhen у = -х - а _

Еlse If x > а Тhen у = х - а_

Еlse у = Sqr(а ^2 - х ^ 2)

МsgВох "у=" + CStr(у)

End Sub

Задача №2.

Вычислить у по заданным а и х:

Sub Main()

Соnst рi Аs Doublе = 3.1418

Dim х, а, у Аs Single

х = InputBox("введите значения для х с клавиатуры")

а = InputBox ("введите значения для а с клавиатуры")

If x >= рi / 2 Тhen у = Ехр(х) + 0.43429 * Log(Аbs(а * х + 3 * х)) _

Еlsе If х <= -рi / 2 Тhen у = Аtn(х) + 7 * х * а _

Е1sе у = Sqr(Аbs(х ^ 3 + 3 * х)) + Sin(х) + 3 * а

МsgВох "у=" + СStr(у)

Еnd Sub

3. Решение задач на циклический процесс

Очень часто под одним именем хранится большой массив данных, а потому приходится использовать у имени массива индекс, который показывает номер элемента последовательности, с которым работаем.

Рассмотрим работу операторов циклического процесса на примерах.

Задача 1

Вычислить произведение элементов, стоящих на нечётных местах в последовательности с(20), используя оператор Dо While_1оор.

Sub Main()

Dim I As Integer

Dim р, с(20) Аs Single

р = 1

i=1

Do While i<20

с( i) = InputВох("введиге значение для с( i) с клавиатуры")

р = р*с(i)

i=i + 2

Lоор

МsgВох "произведение элементов на нечетных местах=" + СStr(р)

End Sub

4. Работа с данными рабочего листа excel

Пример 1. Вычислить у по заданным на рабочем поле Excel а и х.

Private Sub CommandButtonl_Click()

Dim x As Integer, у As Integer, a As Integer

x = Лист1.Range("A2").Value

a = Лист1.Range("B2").Value

If x >= 2 Then

у = а*х^2 + Log(x)

Else

If (x > -2) And (x < 2) Then

у = Sin(x) - a * x ^ 3

Else

у = Log(Abs(x ^ 3-3*х^2-7*а))

End If

End If

Лист1.Range("C2").Value = у

End Sub

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

Private Sub CommandButton1_Click()

Dim x, y As Integer

X= Лист1.Range (“B2”). Value

A=Лист1.Range (“A2”).Value

Select Case A

Case Is >=x

Y = 0

Case Is <= -x

Y=X-A

Case Else

Y=SQR(A^2-X^2)

End Select

Лист1.Range (“C2”).Value=Y

End Sub

Пример 3. Вычислить сумму элементов массива а(30), значения которых лежат в диапазоне [2,5].

Private Sub CommandButton1_Click()

Dim а (30) Аs 1ntegег, i, k, sum Аs Integег

'внесение в массив значений элементов массива с рабочего листа

i = 1

Dо Whi1е i <= 30

а(i) = Се11s( (i + 1) , 1)

i = i + 1: Lоор

i =1

k = 1

sum = 0

Dо Whi1е i <= 30

If а(i) >= 2 And а(i) <= 5 Then

Лист1.Rаngе("В" & k + 1).vа1ue = i

k = k + 1

sum= sum + а (i)

End If

i=i + 1

Lоор

Лист1.Rаngе("С2").vа1uе = sum

End Sub

Privatе Sub СоmmandВutton2_С1iсk ()

Dim i Аs Integег

i = 1

Dо Whi1е i <= 30

Се11s ( (i + 1) , 2) = " "

i = i + 1

Lоор

Се11s (2, 3) = " "

End Sub

Можно использовать оператор цикла For _ Next. Тогда программа примет вид, приведенный ниже:

Private Sub CommandButton1_Click()

Dim a(10) As Integer, i, k, sum As Integer

For i=0 to 9

a(i) = Cells((i + 1), 1)

Next i

k = 1

sum = 0

For i=0 to 9

If a(i) >= 2 And a(i) <= 5 Then

Лист1.Range("b" & k + 1).Value = i

k = k + 1

sum = sum + a(i)

End If

Next i

Лист1.Range("c2").Value = sum

End Sub

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]