Лабораторные работы по программированию на VBA

Лабораторные работы по программированию на VBA

Для реализации процедур на VBA  необходимо:

1 – изучить операторы языка VBA;

2 – уметь разрабатывать алгоритмы для решения конкретных задач;

3 – уметь работать в среде редактора Visual Basic в одном из приложений (Word, Excel, Access).

Будем рассматривать примеры подпрограмм и функций VBA  в среде редактора Visual Basic Excel. Для входа в среду VBA Excel  необходимо выполнить команду Сервис/Макрос/Редактор Visual Basic или воспользоваться горячей клавишей Alt+F11. Чтобы начать набор текста функции или подпрограммы на языке VBA необходимо находясь в среде VBA выполнить команду  Insert(Вcтавить)/Module(Модуль) и затем воспользоваться командой  Insert(Вcтавить)/Procedure(Процедуру). В появившемся окне необходимо выбрать функцию или подпрограмму и задать ее имя. После этого будут автоматически сформированы операторы начала и конца процедуры  и можно переходить непосредственно к набору операторов процедуры. Для набора следующей процедуры в том же модуле необходимо повторить команду Insert(Вcтавить)/Procedure(Процедуру). Если нужно создать новый модуль повторяется команда Insert(Вcтавить)/Module(Модуль).

 Проверка правописания осуществляется командой Debug(Отладка)/Compile VBAProject(компилировать). Проверка работоспособности разработанной процедуры производится путем ее использования в Excel (вызов функции путем вставки функции из списка функций Excel или вызов подпрограммы путем запуска макроса или пользовательской формы).

Лабораторная работа №1. Разработка  функций для реализации линейных и разветвляющихся  алгоритмов

 В VBA для записи линейных и разветвляющихся алгоритмов используются  оператор присваивания и условный оператор If (если). Оператор присваивания имеет следующий вид:  переменная=выражение  Выражение может быть арифметическим, текстовым или логическим. Для записи выражений в VBA  используются  операции (операторы) арифметические, текстовые и логические.

 Арифметические операции (операторы).   Служат для выполнения арифметических операций, таких как сложение, вычитание, умножение. Операции выполняются над числами. Используются следующие арифметические операторы.

АрифметическийоператорДействиеПример+ (знак плюс)Сложение3+3– (знак минус)ВычитаниеУнарный минус3–1–1* (звездочка)Умножение3*3/ (косая черта)\ (обратная черта)ДелениеЦелочисленное деление5/8  (результат 0.625)5\8  (результат 0)% (знак процента)Процент20%^ (крышка)Возведение в степень3^2 (аналогично 3*3)

Текстовый оператор конкатенации.   Амперсанд (&) используется для объединения нескольких текстовых строк в одну строку.

ТекстовыйоператорЗначениеПример& (амперсанд)+ (плюс)Объединение последовательностей символов в одну последовательность.Выражение "Северный " & " ветер" эквивалентно строке "Северный ветер".

 Для  записи разветвляющихся алгоритмов используется оператор If.

Он имеет две формы записи.

1. Однострочная запись If условие Then [оператор1] [Else оператор2]

2. Многострочная запись

If  условие-1 Then[ оператор1]

[ElseIf условие-2 Then[оператор2] ...

[Else[оператор3]]

End If

 В условии записывается логическое выражение, которое использует операции сравнения, приведенные ниже. Для создания сложных условий используются логические операции and (и) и or (или)

Операции сравнения.   Используются для сравнения двух значений. Результатом сравнения является логическое значение: либо ИСТИНА, либо ЛОЖЬ.

ОператорсравненияЗначениеПример= (знак равенства)РавноA1=B1> (знак больше)БольшеA1>B1< (знак меньше)МеньшеA1<B1>= (знак больше и знак равенства)Больше или равноA1>=B1<= (знак меньше и знак равенства)Меньше или равноA1<=B1<> (знак «не равно»)Не равноA1<>B1

 Примеры функций

  •  функция вычисления выражения y=

Public Function fun1(x)

 fun1=(x*x-5*2^0.5)/(2*x^3+1)

End Function

  •  функция вычисления полупериметра треугольника по трем   сторонам a, b, c

Public Function Полупериметр(a, b, c)

 Полупериметр=(a+b+c)/2

 End Function

  •  функция вычисления длины окружности и площади круга заданного радиуса R

Public Function Окружность(R)

    Pi=3.14

    a=2*Pi*R

    b=Pi*R^2

    Окружность="С="+str(a)+" S="+str(b)

End Function

  •  функция нахождения максимального элемента из трех чисел a, b, c.

Public Function Max(a, b, c)

If  a > b Then

      m = a

Else

       m = b

End If

If  c > m Then

         Max = c

  Else

         Max = m

  End If

End Function

  •  функция нахождения корней квадратного уравнения

Public Function Корни(a, b, c)

d = b ^ 2 - 4 * a * c

If d >= 0 Then

x1 = (-b + d ^ (1 / 2)) / (2 * a)

x2 = (-b + d ^ (1 / 2)) / (2 * a)

 Корни = "x1=" + str(x1) + "; x2=" + str(x2)

Else

Корни = "корней нет"

End If

End Function

Задания

На VBA составить функции для:

  1.  вычисления значение функции: 
  2.  вычислить значение функции 
  3.  нахождения минимального  числа из трех (четырех) заданных чисел A, B, C, D;
  4.  решения линейного уравнения вида аx=c, где a и  c - заданные коэффициенты, в том числе и нулевые;
  5.  определения вида треугольника (равносторонний, равнобедренный, прямоугольный), если три заданных числа a, b, c задают длины его сторон;
  6.  нахождения площади треугольника, если три заданных числа a, b, c задают длины его сторон.
  7.  найти площадь трапеции, если четыре заданных числа задают длины ее сторон;
  8.  вывести текстовое представление числа.
  9.  вычислить подоходный налог, если известен совокупный годовой доход;
  10.  вычислить размер стипендии, если известен средний балл студента.

Лабораторная работа №2. Разработка  функций для реализации простейших  циклических  алгоритмов

 Для  реализации циклических алгоритмов в VBA используются 3 вида операторов цикла For, While, Do Loop

  1.  Формат оператора For

For переменная = начальное_значение To конечное_значение [Step шаг][операторы][Exit For][операторы]

Next [перменная]

пример

For I = 1 To 10

   For J = 1 To 10

       For K = 1 To 10

           ...

       Next K

   Next J

Next I

  1.  Формат оператора While

While условие[операторы]

Wend

пример

While i <= 10    s=s+i

     i=i+1

Wend

  1.  Формат оператора Do ... Loop имеет две разновидности

Do [{While | Until} условие][операторы][Exit Do][операторы]

Loop

или

Do[операторы][Exit Do][операторы]

Loop [{While | Until} условие]

 Примеры функций циклических алгоритмов

  •  функция вычисления суммы S=12+22+…+n2;

Public Function FunS(n)

Dim s As Integer

Dim i As Integer

s = 0

For i = 1 To n

   s = s + i ^ 2

Next

FunS=s

End Function

  •  функция вычисления приближенного значения sin(x) по формуле  у=x/1!-x3/3!+x5/5!-….+x2n+1/(2n+1)! с заданной погрешностью;

Public Function sinus(x, погрешность)

i = 2

p = x

s = x

While Abs(p) > погрешность

    p = -p * x ^ 2 / (i * (i + 1))

     i = i + 2

    s = s + p

Wend

sinus = s

End Function

Задание. На VBA составить функции для:

  1.  найти  , где n заданное число;
  2.  найти , где m и n заданные числа;
  3.  вычисления  суммы S=103+113+…+n3;

Public Function FunS(n As Integer) As Double

Dim i As Integer

Dim sum_3

For i = 10 To n

   sum_3 = sum_3 + i ^ 3

Next i

FunS = sum_3

End Function

  1.  найти , где m и n заданные числа;
  2.  вычислить сумму кубов трехзначных четных чисел;
  3.  вычислить сумму квадратов тех четырехзначных чисел, которые при делении на 5 дают в остатке 2;
  4.  найти сумму всех несократимых дробей, со знаменателем к, содержащихся между целыми числами m и n, где к простое число;
  5.  найти сумму S=1*100+2*99+3*98+…+ 50 *51
  6.   найти  , где f(x) любая заданная функция;
  7.  найти , где n заданное число и f(x) любая заданная
  8.  вычисления произведения   P=n!=1*2*….*n;
  9.  нахождения такой суммы S=1+2+3+…, для которой |S-M|  минимально. M –заданное число;
  10.  вычисления  суммы S= 1!+2!+3!+……+ n!;
  11.  вычисления приближенного значения cos(x) по формуле у=1-x2/2!+x4/4!-….+x2n/(2n)! для заданного числа n;
  12.   вычисления приближенного значения  ex по формуле , с заданной точностью E;

Лабораторная работа №3. Использование VBA в Excel.

Пример. Составить таблицу истинности функции F=

Порядок выполнения.

Создать подпрограмму «Табл», в который записать следующий код:

Sub Табл ()

Dim А, В, F As Boolean

Range("B1") = "А"

Range("C1") = "В" Формируем строку заголовка

Range("D1") = "F"  

i = 2      Начинаем таблицу со 2 строки

For А = True To False   Цикл перебора по А

    For В = True To False  Цикл перебора по В

          With Application Формируем значения в столбцах

              Cells(i, 1) = i - 1

              Cells(i, 2) = А

              Cells(i, 3) = В

              Cells(i, 4) = Not A Or B

  End with

i = i + 1   переходим на следующую строку

       Next     закрываем цикл по В

Next       закрываем цикл по А

End Sub

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

ABF1-1-1-12-10030-1-1400-1

.

Задание (Лист1). Составить таблицу истинности функции –

1. Логического сложения.

2. Логического следования.

3. Логического умножения.

4. Функции F=

5. Функции F=

6. Функции F=

7. Функции F=

8. Функции F=

9. Функции F=

10. Функции F=

Задание (Лист2). Составить таблицу истинности функции –

1. Логического сложения трех логических переменных.

2. Логического следования трех логических переменных.

3. Логического умножения трех логических переменных.

4. Функции F=

5. Функции F=

6. Функции F=

7. Функции F=

8. Функции F=

9. Функции F=

10. Функции F=

Задание (Лист3). По аналогии с предыдущим заданием построить таблицу значений функции и график:

1. Функции F=sin (x)

2. Функции F=cos (x)

3. Функции F=x2

4. Функции F=x3

5. Функции F=cos (x) sin (x)

6. Функции F=cos (x) – sin (x)

7. Функции F=cos (x) + sin (x)

8. Функции F=cos (2x)

9. Функции F=cos 2(x)

10. Функции F=sin2 (x)