Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Инф VBA

.pdf
Скачиваний:
31
Добавлен:
29.03.2016
Размер:
1.88 Mб
Скачать

100

Cells(i, 2).Value = y

i = i + 1

Next x

10.Сохраните рабочую книгу. Запустите процедуру вычисления площади с помощью команды Запуск (Run) или нажмите F5.

11.При необходимости устраните ошибки.

12.Установите на рабочий лист кнопку, так как это делалось в Лабораторной работе 2. Привяжите к кнопке процедуру Табулирование1. Переименуйте кнопку: ”Цикл с параметром”

13.Создайте еще основную процедуру, (в тот же модуль вставить ещё одну процедуру с именем Табулирование2):

Public Sub Табулирование2 ()

End Sub

14. Под заголовком поместите код подпрограммы.

Const a = -1, b = 5, m = 20

Dim i As Integer

Dim x, y, h As Single Range("D1").Value = "x" Range("E1").Value = "y" h = (b - a) / m

i = 3

Do While x <b + h / 2 y=ФункY(x)

Cells(i, 4).Value = x

Cells(i, 5).Value = y i = i + 1

x=x+h Loop

101

15.Сохраните рабочую книгу. Запустите процедуру вычисления площади с помощью команды Запуск (Run) или нажмите F5.

16.При необходимости устраните ошибки.

17.Установите на рабочий лист кнопку, так как это делалось в Лабораторной работе 2. Привяжите к кнопке процедуру Табулирование2. Переименуйте кнопку: ”Цикл с предуславием Do While Loop”

18.Создайте еще основную процедуру, (в тот же модуль вставить ещё одну процедуру с именем Табулирование3):

Public Sub Табулирование3()

End Sub

19.Под заголовком поместите код подпрограммы. Const a = -1, b = 5, m = 20

Dim i As Integer Dim x, y, h As Single

Range("G1").Value = "x" Range("H1").Value = "y" h = (b - a) / m

i = 3 Do

y=ФункY(x) Cells(i, 7).Value = x Cells(i, 8).Value = y i = i + 1

x=x+h

Loop While x <b + h / 2

20.Сохраните рабочую книгу. Запустите процедуру вычисления площади с помощью команды Запуск (Run) или нажмите F5.

21.При необходимости устраните ошибки.

102

22.Установите на рабочий лист кнопку, так как это делалось в Лабораторной работе 2. Привяжите к кнопке процедуру Табулирование3. Переименуйте кнопку: ”Цикл с постуславием Do Loop While ”.

23.Аналогично напишите процедуры для циклов Do Until - Loop и Do - Loop

Until.

Результаты будут представлены в следующем виде:

Рис.14

103

Лабораторная работа № 5 на тему: «Работа с одномерными массивами»

Постановка задачи.

Дан вектор a R8 Найти среднее арифметическое отрицательных

элементов вектора.

Выполнение.

Для реализации данной задачи понадобится оператор цикла с параметром

и неполный оператор ветвления.

Ввод и вывод данных. Пусть вектор a R8 введен в первую строку

таблицы Excel. Результа вычислений – среднее арифметическое отрицательных

элементов поместим в Ячейку А3.

 

 

 

Идентификаторы и типы исходных данных

Табл.14

 

 

 

 

 

 

 

 

Описание переменной

Идентификатор

 

Тип

 

 

 

 

 

 

 

 

Массив

A(8)

 

Single

 

 

 

 

 

 

 

 

 

Сумма

отрицательных

s

 

Single

 

 

элементов

 

 

 

 

 

 

 

 

 

 

 

 

 

Число

отрицательных

m

 

Integer

 

 

элементов

 

 

 

 

 

 

 

 

 

 

 

 

Среднее арифметическое

SrA

 

Single

 

 

 

 

 

 

 

Приступим к созданию процедуры:

1.Загрузите приложение Excel и создайте рабочую книгу с именем

«Лабораторная работа 5».

2.Введите вектор a в первую строку таблицы, начиная с ячейки A1.

2.Одним из способов запустите редактор VBA.

3.Если в проекте нет модуля, то создайте его, выполнив команду меню редактора VB: Вставка→Модуль(Insert→Module);

4.В модуль вставьте процедуру СреднееАрифм, выполнив команду меню редактора VB: Вставка→Процедура (Insert→ Procedure);

104

5. В открывшемся диалоговом окне “Вставка процедуры” установите переключатель “Подпрограмма (Sub)”, в поле имени укажите имя процедуры – СреднееАрифм. Щелкните на OK. В окне редактирования кода появится заготовка общей процедуры вида:

Public Sub СреднееАрифм ()

End Sub

6. Под заголовком поместите код подпрограммы.

Const n=8

Dim a (1 To n) As Single 'объявили одномерный массив

Dim s, SrA As Single

Dim i, m As Integer

For i=1 To n

a(i)=Cells(1,i).Value If a(i)<0 Then

m=m+1

s=s+a End If

Next

SrA=s/m

Range ("A2").Value ="Среднее арифметическое отрицательных элементов"

Range ("A3").Value =SrA

7.Сохраните рабочую книгу. Запустите процедуру вычисления площади с помощью команды Запуск (Run) или нажмите F5.

8.При необходимости устраните ошибки.

9.Установите на рабочий лист кнопку и привяжите к ней написанную программу, так как это делалось в Лабораторной работе 2.

105

Лабораторная работа № 6 на тему: «Работа с одномерными массивами.Сортировкамассива»

Постановка задачи.

Из двух массивов a (12) и b (7) получить новый массив, состоящий из синусов всех элементов исходных массивов больших 1. Полученный массив

расположить в порядке возрастания его элементов.

Выполнение.

Сортировку массива оформим в виде отдельной процедуры.

Ввод и вывод данных. Пусть вектор a(12) введен в первую строку таблицы

Excel, начиная с B1, а вектор b в третью, начиная с B2. Результ – новый вектор

с поместим в пятую строку, начиная c B5.

 

 

 

Идентификаторы и типы исходных данных

Табл.14

 

 

 

 

 

 

 

 

Описание переменной

Идентификатор

 

Тип

 

 

 

 

 

 

 

 

Массив a

a(12)

 

Single

 

 

 

 

 

 

 

 

Массив b

b(7)

 

Single

 

 

 

 

 

 

 

 

Массив c

c(19)

 

Single

 

 

 

 

 

 

Приступим к созданию процедуры:

1.Загрузите приложение Excel и создайте рабочую книгу с именем

«Лабораторная работа 6».

2.Введите вектор a в первую строку таблицы, начиная с ячейки B1 и вектор b

в третью строку, начиная с ячейки В3.

3.Одним из способов запустите редактор VBA.

4.Если в проекте нет модуля, то создайте его, выполнив команду меню редактора VB: Вставка→Модуль(Insert→Module);

2. Создадим сначала процедуру сортировки одномерного массива, которую

можно использовать в различных задачах. Выполним команду меню редактора

VB: Вставка→Процедура (Insert→ Procedure);

106

3. В открывшемся диалоговом окне “Вставка процедуры” установите переключатель “Подпрограмма (Sub)”, в поле имени укажите имя процедуры – Сортировка. Щелкните на OK. В окне редактирования кода появится заготовка общей процедуры вида, куда мы добавим параметры:

Public Sub Сортировка(ByVal n As Integer, ByRef x() As Single) End Sub

4. Под заголовком поместите код подпрограммы.

Dim i, k, m as Integer

Dim r as Single

For k = n to 2 step -1 m= 1

For i = 2 to k

If x(i) > x(m) Then m = i

End If

Next i

r = x(k) x(k) = x(m) x(m) = r

Next k

5. Создайте основную процедуру Массивы2.

Public Sub Массивы2 ()

End Sub

6. Под заголовком поместите текст основной программы.

Const n1=12, n2=7

Dim a (1 To n1) As Single 'объявили одномерный массив

Dim b (1 To n2) As Single

Dim с (1 To n1+n2) As Single

Dim i, nс As Integer

107

nc=0

For i=1 To n1 a(i)=Cells(1,i+1).Value If a(i)>1 Then

nc=nc+1

c(nc)=sin(a(i)) End If

Next

For i=1 To n2 b(i)=Cells(3,i+1).Value If b(i)>1 Then

nc=nc+1

c(nc)=sin(b(i)) End If

Next

Call Сортировка(nc, c())

Cells(5,1).Value="Вектор с"

For i=1 To nc

Cells(5,i+1).Value=c(i)

Next

7.Сохраните рабочую книгу. Запустите процедуру вычисления площади с помощью команды Запуск (Run) или нажмите F5.

8.При необходимости устраните ошибки.

9.Установите на рабочий лист кнопку и привяжите к ней написанную программу, так как это делалось в Лабораторной работе 2.

108

Лабораторная работа № 7 на тему: «Работасдвумернымимассивами»

Постановка задачи.

Для матрицы A 8 , 5 найти сумму кубов ее элементов, лежащих на

нечетных колонках.

Выполнение.

Ввод и вывод данных. Пусть исходные данные элементов матрицы расположены в таблице Еxcel следующим образом:

Рис. 15

Результат счета будем выводить в ячейку B12.

Приступим к созданию процедуры:

1. Загрузите приложение Excel и создайте рабочую книгу с именем

«Лабораторная работа 7».

2.Введите матрицу A.

3.Одним из способов запустите редактор VBA.

4.Если в проекте нет модуля, то создайте его, выполнив команду меню редактора VB: Вставка→Модуль(Insert→Module);

5.В модуль вставьте процедуру Массивы3.

109

Public Sub Массивы3 ()

End Sub

6. Под заголовком поместите код подпрограммы.

Const n=8, m=5

Dim A (1 To n, 1 To m) As Single

Dim s As Single

Dim i, j As Integer

For i=1 To n

For j=1 To m

A(i,j)=Cells(i+2,j).Value

Next

Next s=0

For i=1 To n

For j=1 To m Step 2 s=s+A(i,j)^3

Next

Next

Range ("A12").Value="S="

Range ("B12").Value=s

7.Сохраните рабочую книгу. Запустите процедуру вычисления площади с помощью команды Запуск (Run) или нажмите F5.

8.При необходимости устраните ошибки.

9.Установите на рабочий лист кнопку и привяжите к ней написанную программу, так как это делалось в Лабораторной работе 2.