ТОП 10:

Оператори управління обчислювальним процесом



При необхідності виконувати ті чи інші оператори в залежності від дотримання деяких умов, використовують оператори управління обчислювальним процесом. До них відносяться оператор безумовного переходу, оператори умовного переходу та оператор вибору.

Оператори умовного переходу If...Then

1) Оператор If … Then - перевіряється одна умова і виконується один оператор чи блок операторів.

Синтаксис:

If <умова> Then <оператор>

або з декількома операторами

If <умова> Then

<Блок операторів>

End If

2) Оператор If … Then … Else - перевіряється одна умова і виконується один із двох блоків операторів.

Синтаксис:

If умова Then

<Блок операторів 1>

Else

<Блок операторів 2>

End If

Приклад.

Sub Вік ()

If vik <= 7 Then

MsgBox "Дошкiльник"

Else

MsgBox "Школяр або дорослий"

End If

End Sub

 

3) Оператор If … Then … ElseIf - перевіряється кілька умов і виконується один з декількох блоків операторів.

Синтаксис:

If <умова1> Then

<Блок операторів 1>

ElseIf <умова2> Then

<Блок операторів 2>

ElseIf <умова3> Then

<Блок операторів3>

Else

<Блок операторів_n>

End If

Приклад.

Sub Вік1 ()

vik= InputBox ("Вкажіть вік")

If vik < 7 Then

MsgBox "Дошкiльник"

ElseIf vik < 17 Then

MsgBox "Школяр"

ElseIf vik < 23 Then

MsgBox "Студент"

ElseIf vik < 55 Then

MsgBox "Спецiалiст"

Else

MsgBox "Пенсiонер"

End If

End Sub

Оператор вибору Select Case

4) Оператор Select Case – оператор вибору, перевіряється одна умова і виконується один з декількох блоків операторів. Оператор заміняє серію операторів ElseIf, якщо один і той же вираз порівнюється з декількома значеннями

Синтаксис:

Select Case <вираз>

Case <значення1>

<Блок операторів 1>

Case <значення2>

<Блок операторів 2>

Case Else

<Блок операторів N>

End Select

Приклад.

Sub SelectCase ( )

Dim a As Single

a = InputBox("Введіть ваш зріст у сантиметрах")

Select Case a

Case Is < 150

MsgBox "У вас дуже малий зріст"

Case 151 То 178

MsgBox "Ви людина середнього зросту"

Case Is > 178

MsgBox "Ви висока людина"

End Select

End Sub

Об’єкти VBА у середовищі MS Excel

Мова VBA містить готові об’єкти, призначені для використання в різних додатках Microsoft Office. В середовищі Microsoft Excel такими об’єктами є: книга, лист, діапазон листа, діаграма. Рядок аркуша, стовпчик, окрема клітинка також є діапазоном. Книга визначається іменем файлу. Аркуші та діаграми книги визначаються або за номером у книзі, або за іменем аркуша(діаграми). Стовпчики та рядки визначаються номером. Діапазон на аркуші визначається або координатами двох кутів діапазону, або присвоєним іменем. Клітинка визначається назвою стовпчика і номером рядка.

В мові VBA можна використовувати змінні, значенням яких служить об'єкт: книга, лист або діапазон. Для того, щоб визначити таку змінну, використовують зарезервовані слова Workbook (книга), Worksheet (лист), Range (діапазон), Chart (діаграма). Є також функції, які можуть присвоїти значення конкретного об'єкта:

Workbooks (“book1.xls) має значенням книгу у файлі з іменем “book1.xls”;

Worksheets (“Лист1”) або Worksheets (1) має значенням перший лист активної книги;

Range (“B3:G7”) має значенням діапазон активного листа з координатами B3 і G7;

Workbooks (“book1.xls) .Worksheets("Лист2").Range("М5:S2 0").

Для того, щоб у програмі змінну WH оголосити як аркуш книги, а змінну RR оголосити як діапазон, необхідно записати так:

Dim WH as Worksheet, RR as Range

‘ Присвоєння змінній значення об'єктаув VBA має спеціальний вид з використанням слова Set:

Set WH = Worksheets (“Лист2”)

Set RR = WH.Range (“A1:H8”)

Після цих команд змінна WH вказує на лист відкритої книги з іменем “Лист2”, а змінна RR відповідає діапазону A1:H8 цього листа. Тут запис WH.Range означає метод Range об'єкта WH, що повертає діапазон аркуша за його координатами.

Нижче подано перелік деяких властивостей і методів, що можна застосувати до об'єктів:

метод Activate для аркуша – робить активним даний аркуш;

властивість Cells(j,k) для аркуша означає клітинку у j-му рядку і k-му стовпчику аркуша;

властивість ActiveCell для аркуша означає поточну клітинку аркуша;

властивість Selection для аркуша означає сукупність всіх виділених діапазонів на аркуші;

метод Select для діапазону робить виділеним даний діапазон;

властивість Cells(j,k) для діапазону означає клітинку у j-му рядку і k-му стовпчику діапазону;

властивість Offset(j,k) для діапазону означає клітинку із зміщенням на j рядків і k стовпчиків від верхнього кута діапазону;

властивість Rows.Count повертає кількість рядків у діапазоні;

властивість Columns.Count повертає кількість стовпчиків у діапазоні;

властивість CurrentRegion для клітинки повертає максимальний діапазон, що містить дану клітинку і обмежений з усіх сторін пустими рядками і стовпчиками;

властивість Font діапазону або клітинки представляє собою опис шрифта для запису даних;

властивість Value для клітинки задає значення, що зберігається або обчислюється в клітинці;

метод Activate для клітинки робить цю клітинку поточною;

властивість Areas(k) означає k-й по порядку діапазон серед кількох виділених діапазонів.

 

 

Теоретична довідка до ПР №28-29

Оператори циклів

У мові програмування під циклом розуміють послідовність операторів, що повторюється багаторазово. Цикл, в якому відома кількість повторень, називається арифметичним. Цикл, у якому кількість повторень не відома і залежить від виконання деяких умов, називається ітераційним.

Ітераційний цикл

Оператор циклу без лічильника Do … Loop використовується в одному з чотирьох варіантів:

Do While <умова продовження циклу> … Loop

Do Until <умова закінчення циклу > … Loop

Do … Loop While <умова продовження циклу>

Do … Loop Until <умова закінчення циклу>

Нехай, наприклад, треба розрахувати значення Y за­лежно від введеного значення X. Тоді фрагмент програ­ми матиме такий вигляд:

1) У даному прикладі цикл виконується, якщо введені значення Х задовольняють умову Х>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







Последнее изменение этой страницы: 2016-07-11; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.228.10.64 (0.014 с.)