Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
EDO_VBA.doc
Скачиваний:
3
Добавлен:
11.08.2019
Размер:
494.08 Кб
Скачать

4. Константи

Константи — ще один контейнер для зберігання даних, але, на відміну від змінних, вони не змінюються в ході виконання VBA -програми. Константи використовують в наступних випадках:

ˆ код стає більше прозорим, забираються потенційні помилки;

ˆ щоб змінити яке-небудь значення в коді (наприклад, рівень податку), це треба зробити усього один раз — в оголошенні константи.

У VBA константи визначаються за допомогою ключового слова Const :

Const COMP_NAME As String = "Microsoft"

Головна відмінність констант від змінних полягає в тому, що при спробі змінити значення константи в тілі процедури буде видано повідомлення про помилку. Константи дуже зручні при роботі з групами іменованих елементів (дні тижня, місяці, кольори, клавіші, типи вікон і т. п.). Вони дозволяють використовувати в коді програми легко читані позначення замість важких для запам’ятовування числових кодів. Наприклад, рядки:

UserForm1.BackColor = vbGreen

і

UserForm1.BackColor = 65280

функціонально однакові, але в чому сенс першого рядка, здогадатися значно легше. У VBA вбудована множина службових констант : календарних, для роботи з файлами, кольорами, формами, типами дисків і т. п. Проглянути їх можна через довідкову систему VBA : Microsoft Visual Basic Documentation | Visual Basic Language Reference | Constants.

Про одну з констант (вона находиться в розділі Miscellaneous Constants) слід сказати особливо: константа vbCrLf дозволяє зробити перехід на новий рядок, наприклад:

MsgBox "Перший рядок" + vbCrLf + "Другий рядок"

5. Оператори умовного і безумовного переходу

Оператори умовного переходу — одні з найважливіших і часто використовуваних елементів в мовах програмування. Загальний принцип їх роботи простий: перевіряється відповідність якимсь умовам (істинність або хибність яких-небудь виразів) і залежно від цього виконання програми спрямовується по одній або іншій гілці. У VBA передбачено два оператора умовного переходу : If...Then і Select Case.

5.1. Оператор If ... Then

Оператор If...Then — найпопулярніший у програмістів. Повний його синтаксис виглядає так (необов'язкові частини поміщені в квадратні дужки) :

If Умова Then

Команди1

[ElseIf УмоваN Then

КомандиN]

[Else

Команди2]

End If

При цьому:

ˆ Умова — вираз, який перевіряється на істинність. Якщо він ісинний, то виконуються Команди1, якщо помилковий — Команди2;

ˆ УмовиN — додаткові умови, які також можна перевірити.

У разі, якщо вони виконуються (вираз УмоваN істинний), то виконуються КомандиN. Додаткові умови (разом з конструкцією ElseIf) можна повторювати необмежена кількість разів, але якщо треба реалізувати перевірку на відповідність великій кількості умов, то правильніше використовуватиме конструкцію Select Case.

Оператор If...Then застосовується:

ˆ коли треба перевірити на одно умову і у разі відповідності зробити якась дія:

If nTemperature < 10 Then

MsgBox "Надіти куртку"

End If

ˆ коли треба зробити те ж, що і в попередньому прикладі, а у разі невідповідності виконати іншу дію:

If nTemperature < 10 Then

MsgBox "Надіти куртку"

Else

MsgBox "Надіти вітрівку"

End If

ˆ коли треба перевірити на відповідність декількох умов:

If (nTemperature < 10) And (bRain = True) Then

MsgBox "Надіти куртку і узяти парасольку"

End If

ˆ у разі, коли перевірка першої умови повернула False, треба перевірити на відповідність ще декілька умов (зручно використовувати ElseIf) :

If (bIGoInCar = True) Then

MsgBox "Одягнутися для машини"

ElseIf nTemperature < 10 Then

MsgBox "Надіти куртку"

Else

MsgBox "Можна йти в сорочці"

End If

В даному прикладі, оскільки bIGoInCar — змінна типу Boolean і сама по собі приймає значення True або False, перший рядок можна представити так:

If bIGoInCar Then ...

Приведу деякі зауваження по використанню If...Then:

ˆ ключове слово Then повинне знаходитися в одному рядку з If і умовою. Якщо ви перенесете його на наступний рядок, буде видано повідомлення про помилку;

ˆ якщо розмістити команду, яку треба виконати при істинності про-

веряемого умови, на одному рядку з If і Then, то End If можна не

писати:

If nTemperature < 10 Then MsgBox "Надіти куртку"

Якщо ж ви використовуєте декілька команд або конструкції Else/ElseIf,

те End If у кінці треба писати обов'язково, інакше виникне синтаксиче-

ская помилка;

ˆ для вираження If...Then настійно рекомендується використовувати від-

ступи для виділення блоків команд. Інакше читати код буде важке;

ˆ оператори If...Then можна вкладати один в одного:

If MyVar = 5 Then

MsgBox "MyVar = 5"

If MyVar = 10 Then

MsgBox "MyVar = 10"

End If

End If

Приклад 2 . Проаналізуйте роботу програми:

Sub CheckEven()

Dim myNumber As Integer, parity As String

Range("a1:p100") = ""

myNumber = InputBox("Введіть ваше число:")

If myNumber Mod 2 = 0 Then

parity = " парне!"

Else

parity = " непарне!"

End If

Cells(7, 1) = "Ваше число " & myNumber & parity

MsgBox "Ваше число " & myNumber & parity

End Sub

5.2. Оператор Select Case

Оператор Select Case ідеально підходить для перевірки одного і того ж значення, яке треба багато разів порівняти з різними виразами. Синтаксис його дуже простий:

Select Case Вираз

Case Умова1

Команди1

[Case УсловаN

КомандиN]

[Case Else

Команди2]

End Select

Наприклад:

Select Case sDayOfWeek

Case "Понеділок"

MsgBox "Салат з шпинату"

Case "Вівторок"

MsgBox "Салат з морської капусти"

Case Else

MsgBox "На цей день у нас нічого не передбачено"

End Select

Приведу деякі зауваження із приводу Select Case :

ˆ рядок:

Case "Понеділок"

насправді означає: Case sDayOfWeek = "Понеділок"

Така рівність мається на увазі за умовчанням. Але ви можете використовувати і інший оператор порівняння або цілий набір операторів, наприклад:

Case 0 To 5, 15, Is > 55

Такий вираз можна перевести як "Якщо вираз, що перевіряється, попав в діапазон від 0 до 5 включно, або рівне 15, або більше 55". Слово Is при цьому можна пропустити — компілятор VBA додасть це ключове слово. Декілька критеріїв в Case перераховуються через коми і об'єднуються так, як працює оператор Or, тобто виконання піде по цій гілці, якщо тестоване значення задовольнятиме хоча б одному з критеріїв;

ˆ при використанні діапазону (0 To 5) включаються і межі діапазону (в даному випадку 0 і 5).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]