- •Операції вводу-виводу.
- •2. Оператори
- •3. Змінні і типи даних
- •4. Константи
- •5.3. Оператор GoTo
- •6. Робота з циклами
- •8.2. Зона видимості процедур
- •8.5. Виклик і завершення роботи процедур
- •9.2. Функції перетворення і перевірки типів даних
- •9.3. Стрічкові функції
- •9.4. Функції для роботи з числовими значеннями
- •9.5. Функції для роботи з датою і часом
- •9.6. Функції для форматування даних
- •9.7. Функції для організації взаємодії з користувачем
- •9.8. Функції — замінники синтаксичних конструкцій
- •9.10. Функції для роботи з файловою системою
- •9.11. Інші функції vba
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).