
- •Теоретична довідка до пр №23
- •Код макросів та його редагування
- •Теоретична довідка до пр №24 Середовище vba
- •Процедура типу Sub і процедура типу Function
- •Теоретична довідка до пр №25-26 Об’єктна структура мови vba
- •Загальні принципи побудови vba-програм
- •Основні елементи мови програмування Visual Basic For Application (vba)
- •Стандартні математичні функції
- •Оператор введення InputBox
- •Оператор виведення MsgBox
- •Оператор виведення даних Print
- •Теоретична довідка до пр №27 Оператори управління обчислювальним процесом
- •Оператор вибору Select Case
- •Об’єкти vbа у середовищі ms Excel
- •Теоретична довідка до пр №28-29 Оператори циклів
- •Приклади програм з використанням об’єктів ms Excel у циклічних обчислювальних процесах:
- •Теоретична довідка до пр №30-31 Використання масивів та матриць
- •Теоретична довідка до пр №32 Рядкові величини
- •Теоретична довідка до Практичної роботи №32-33 Властивості екранної форми та елементів управління
- •Основні методи та події об’єктів vba
- •Створення процедур опрацювання подій
Теоретична довідка до пр №30-31 Використання масивів та матриць
Масив— це група однотипних елементів, об’єднаних одним іменем і впорядкованих за індексами, які визначають місце розташування елемента у групі.У мові VBA будь-який масив має власне ім’я і складається із декількох елементів. Кожен елемент масиву має ім’я та номер (індекс), який записано у круглих дужках. Наприклад, А(1), Numer (5). Такий масив називається одновимірним. У мові VBA нумерація елементів у масиві починається з нуля, але за допомогою оператора Option Base 1 можна змінити початковий індекс.
Крім одновимірних масивів у мові VBA можна створювати багатовимірні масиви, що мають два і більше індексів. У масиві з двома індексами дані представлені у вигляді прямокутної таблиці, що має рядки та стовпці. Якщо кількість рядків дорівнює кількості стовпців, то масив називається матрицею.
Мова VBA підтримує два типи масивів — статичні та динамічні. Використання динамічних масивів є доцільниму випадках: 1) коли розмір масиву невідомий до моменту виконання програми; 2) якщо в ході виконання програми розмір масиву буде змінюватися; 3)якщо при виконанні програми після завершення використання масиву необхідно звільнити пам’ять.
Для статичних масивів розмірність, вказана при їх оголошенні, залишається фіксованою впродовж виконання програми. Для оголошення масиву фіксованої розмірності вказують у круглих дужках після його імені конкретні розміри. Наприклад:
'Одновимірний масив з 51 элемента
Dim M1(50) As Integer
'Двовимірний масив з 11 рядків по 21 елементу
Dim M2(10,20) As Integer
При оголошенні динамічного масиву його розмірність після імені не вказується, наприклад:
Dim M1 () As Single
Перед використанням динамічного масиву у процедуру вписують оператор ReDim, який визначає фактичну розмірність масиву, наприклад:
ReDim M1(5) 'одновимірний масив з 6 елементів
ReDim M1(1 ТО 6, 1 То 10) 'двовимірний масив з 60 елементів
При повторному визначені масиву його вміст знищується. Для збереження вже існуючих даних вказують ключове слово Preserve.
Dim M() As Single
ReDim M(1 To 10, 1 To 20)
ReDim Preserve M(1To 10, 1 To 50)
Для оголошення констант використовують ключове слово Const, наприклад:
Const КilkistVydNarahuvan =16
Const VydNarahuvan= "Нарахування премії"
Приклад
1. Обчислити
середнє геометричне елементів
одновимірного масиву Y,
які задовольняють умові yi>0.
Середнє геометричне розраховується за
формулою
Таблиця ідентифікаторів:
Змінна алгоритму |
Кількість елементів у масиві |
Добуток елементів масиву, що відповідають умові yi>0 |
Кількість елементів масиву, що відповідають умові yi>0 |
Заданий масив |
Номер елементу масиву -параметр циклу |
Ідентифікатор |
n |
D |
p |
Y(20) |
i |
Тип |
integer |
single |
integer |
integer |
integer |
Текст програми:
Sub Odnovymirniy_masiv()
' Оголошення змінних
Dim Y(20) As Integer
Dim n As Integer, i As Integer, p As Integer
Dim D As Single, S As Single
' Уведення даних
n = InputBox("Задайте кiлькiсть елементiв n=")
' Встановлення початкового значення добутку та кількості елементів, що відповідають умові
D = 1
p = 0
For i = 1 To n
Y(i) = InputBox("Задайте елемент масива Y(" + Str(i) + ")=")
If Y(i) > 0 Then
D = D * Y(i)
p = p + 1
End If
Next i
s = D ^(1/p)
MsgBox ("Середнє геометричне s=" + Str(s))
End Sub
Контрольний приклад
Y=
Виконання обчислень для даних тестового прикладу.
Задайте кiлькiсть елементiв n=6
Задайте елемент масива Y[1]=2;
Задайте елемент масива Y[2]=-54;
Задайте елемент масива Y[3]=4;
Задайте елемент масива Y[4]=-6;
Задайте елемент масива Y[5]=4;
Задайте елемент масива Y[6]=0;
Результат:
Приклад 2. Знайти в кожному рядку масиву F(N,M), N20, M10 мінімальний та максимальний елементи у кожному рядку і розмістити їх на місці першого та останнього елементів рядка відповідно. Масив надрукувати у звичайному вигляді.
Таблиця ідентифікаторів:
Змінна алгоритму |
Кількість рядків у масиві |
Кількість стовпців у масиві |
Номер максим елементу в рядку |
A(20,10) |
i |
j |
min |
max |
Номер мінім елементу в рядку |
k |
K1 |
Ідентифікатор |
n |
m |
p |
A(20,10) |
i |
j |
min |
max |
o |
k |
K1 |
Тип |
integer |
integer |
integer |
integer |
integer |
integer |
integer |
integer |
integer |
integer |
integer |
Текст програми
Sub Matrix()
' оголошення змінних
Dim A(20, 10) As Single
Dim B(20, 10) As Single
Dim n As Integer, m As Integer
Dim i As Integer, j As Integer, p As Integer,
Dim K1 As Integer, k As Integer, o As Integer
Dim min As Single
Dim max As Single
n = InputBox("уведіть кількість рядків n=")
m = InputBox("уведіть кількість стовпців m=")
For i = 1 To n
For j = 1 To m
A(i, j) = InputBox("уведіть елемент масиву A(" + Str(i) + "," + Str(j) + ")=")
Next j
Next i
For i = 1 To n
min = A(i, 1)
max = A(i, 1)
p = 1
o = 1
For j = 1 To m
If (A(i, j) < min) Then
min = A(i, j)
p = j
End If
If (A(i, j) > max) Then
max = A(i, j)
o = j
End If
Next j
k = A(i, p)
k1 = A(i, o)
A(i, o) = k1
A(i, p) = k
A(i, 1) = min
A(i, m) = max
Next i
For i = 1 To n
For j = 1 To m
B(i, j) = A(i, j)
MsgBox ("Елемент масиву B(" + Str(i) + "," + Str(j) + ")=" + Str(B(i, j)))
Next j
Next i
End Sub
Контрольний приклад. Задано масив А
Виконання програми для даних контрольного прикладу:
Задайте кiлькiсть рядкiв матрицi n=4;
Задайте кiлькiсть стовбцiв матрицi m=6;
Задайте елемент масиву А[1,1]=1;
Задайте елемент масиву А[1,2]=5;
Задайте елемент масиву А[1,3]=45;
Задайте елемент масиву А[1,4]=7;
Задайте елемент масиву А[1,5]=11;
Задайте елемент масиву А[1,6]=0;
Задайте елемент масиву А[2,1]=65;
Задайте елемент масиву А[2,2]=4;
Задайте елемент масиву А[2,3]=25;
Задайте елемент масиву А[2,4]=3;
Задайте елемент масиву А[2,5]=1;
Задайте елемент масиву А[2,6]=5;
Задайте елемент масиву А[3,1]=1;
Задайте елемент масиву А[3,2]=22;
Задайте елемент масиву А[3,3]=5;
Задайте елемент масиву А[3,4]=4;
Задайте елемент масиву А[3,5]=0;
Задайте елемент масиву А[3,6]=9;
Задайте елемент масиву А[4,1]=7;
Задайте елемент масиву А[4,2]=5;
Задайте елемент масиву А[4,3]=2;
Задайте елемент масиву А[4,4]=1;
Задайте елемент масиву А[4,5]=4;
Задайте елемент масиву А[4,6]=4;
Після виконання програми отримуємо новий масив В: