
- •Теоретична довідка до пр №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
- •Створення процедур опрацювання подій
Теоретична довідка до пр №28-29 Оператори циклів
У мові програмування під циклом розуміють послідовність операторів, що повторюється багаторазово. Цикл, в якому відома кількість повторень, називається арифметичним. Цикл, у якому кількість повторень не відома і залежить від виконання деяких умов, називається ітераційним.
Ітераційний цикл
Оператор циклу без лічильника Do … Loop використовується в одному з чотирьох варіантів:
Do While <умова продовження циклу> … Loop
Do Until <умова закінчення циклу > … Loop
Do … Loop While <умова продовження циклу>
Do … Loop Until <умова закінчення циклу>
Нехай, наприклад, треба розрахувати значення Y залежно від введеного значення X. Тоді фрагмент програми матиме такий вигляд:
У даному прикладі цикл виконується, якщо введені значення Х задовольняють умову Х>0:
X = Input ("Значення X", Х)
Do While Х> 0
Y=sqr(3*Х+7)
Debug.Print X;Y
Loop
2) У наведеному нижче прикладі цикл виконується, якщо X <5:
X = InputBox ("Значення X")
Do Until X>5
Y=sqr(15-3*Х)
Debug.Print X;Y
Loop
Арифметичний цикл
Якщо необхідно виконати одні і ті ж дії задану кількість разів, але з різними значення деякої змінної, то використовують оператор циклу з лічильником For … Next.
For <змінна циклу = початкове значення> То <кінцеве значення> [Step<крок циклу>]
Тіло циклу
Next [змінна циклу]
Приклад:
Private Sub Prog2()
Dim add As String, n As Integer
add = ""
For n = 1 To 21 Step 2
add = add & n & " "
Next n
MsgBox "Це послідовність непарних чисел:" & " " & add
End Sub
Приклади програм з використанням об’єктів ms Excel у циклічних обчислювальних процесах:
1. Програма переписує вміст стовпчика «B2:B7» на аркуші «Лист1» у стовпчик «E2:E7», виконуючи операції з клітинками аркуша:
Sub example3 ()
Dim j as integer
Worksheets("Лист1").Activate ‘ Аркуш «Лист1» стає поточним активним аркушем
For j=2 To 7
Cells(j,5).Value = Cells(j,2).Value
Next j
End Sub
2. Програма для копіювання вмісту цілого діапазону. Початковий діапазон після копіювання буде стиратися.
Sub example4 ()
Dim R1 as Range, R2 as Range, j as integer, k as integer, m as integer, n as integer
Set R1 = Worksheets("Лист1").Range ("B2:C7")
Set R2 = Worksheets("Лист1").Range ("E4:F9")
m = R1.Rows.Count
n = R1.Columns.Count
For j=1 to m
For k=1 to n
R2(j,k).Value = R1(j,k).Value
R1(j,k).Value = “ ”
Next k
Next j
End Sub
3. Цей приклад демонструє функцію, що обчислює суму вмісту всіх клітинок заданого діапазону:
Function summ (adr as string) as single
Dim j as integer, k as integer, m as integer, n as integer
Dim s as single
Dim RN as Range
Set RN = Range (adr)
Rem Встановити діапазон із заданою в параметрі функції адресою
m = RN.Rows.Count ‘Кількість рядків діапазону
n = RN.Columns.Count ‘Кількість стовпців діапазону
s = 0
For j = 1 to m
For k = 1 to n
s = s + RN(j, k).Value
Next k
Next j
summ = s
End Function
4. Наступний приклад демонструє функцію, що обчислює клітинку в заданому діапазоні, що містить мінімальне число в цьому діапазоні.
Function minm (adr as string) as Range
Dim j as integer, k as integer, m as integer, n as integer
Dim s as single
Dim RN as Range, RC as Range
Set RN = Worksheets ("Лист1").Range (adr)
m = RN.Rows.Count
n = RN.Columns.Count
Set RC = RN (1, 1)
For j = 1 to m
For k = 1 to n
IF RN (j, k).Value < RC.Value Then
Set RC = RN (j, k)
End IF
Next k
Next j
Set minm = RC
End Function
5. В наступному прикладі мінімум в діапазоні запишеться, наприклад, в клітинку B13.
Sub example5 ()
Cells (13, 2) = minm ("B2:C11").Value
End Sub