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

Операції vba

В програмах на VBA можна використовувати стандартний набір операцій над даними. Існує три типи операцій:

  • математичні (виконуються над числами і їх результатом є числа),

  • відношення (виконуються не лише над числами і їх результатом є логічні значення (true – “істина”, false – “ложь”), наприклад, х < у),

  • логічні (застосовуються для логічних виразів і їх результатом є логічні значення, наприклад, Not x And y).

Математичні операції: +, -, *, /, \ (цілочисельне ділення), Mod (залишок від ділення),

^ (піднесення до степені).

Операції відношення: <, >, <=, >=, <> (не рівно), =.

Логічні операції: виконуються з даними логічного типу (boolean).

Операція

Опис

[Операнд 1] And [Операнд 2]

[Операнд 1] Or [Операнд 2]

[Операнд 1] Хor [Операнд 2]

Not [Операнд]

[Операнд 1] Equ [Операнд 2]

Логічне множення (кон’юнкція)

Логічне додавання (диз’юнкція)

Виключаюче Or, тобто повертає True тільки тоді, коли один операнд повертає True

Логічне заперечення (працює тільки з одним операндом)

Логічна еквівалентність

Результат обчислення логічної операції, в залежності від значень операндів X і Y наведені у таблиці.

X

Y

Аnd

Or

Xor

Eqv

True

true

true

true

false

true

True

false

false

true

true

false

False

true

false

true

true

false

false

false

false

false

false

true

Операції з рядками

[Рядок1] & [Рядок2] – зчеплення рядків. Для зчеплення рядків допустимо використання операції [Рядок1] + [Рядок2], але рекомендується застосовувати знак & (амперсант).

Приклад:

S1 = “Hello”

S2 = “Word”

S = S1 & “ “ & S2 ‘Результатом виконання зчеплення рядків буде рядок “Hello Word ”

Вирази. Пріоритети (старшинство) операцій

Вирази - це поєднані за допомогою операцій константи, змінні та вирази, які взяті в дужки. Вирази в залежності від значення, яке вони приймають можуть бути числовими або логічними. Щоб знайти значення виразу, необхідно його обчислити, тобто виконати всі операції. VBA виконує операції в залежності від їх пріоритетів, і це дає можливість одержати однозначний результат.

Приведемо пріоритети виконання операцій:

  1. виклик функції і дужки (мають найвищий пріоритет, тобто виконуються в першу чергу

  2. ^

  3. -(зміна знаку)

  4. * і /,

  5. \

  6. mod

  7. + і –

  8. >,<,>=,<=,<>,=

  9. Not

  10. And

  11. Or

  12. Xor

  13. Equ (операція має найнижчий пріоритет, тобто виконується останньою)

Функції VBA, використання функцій

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

Синтаксис запису функцій:

<Імя функції>([<аргумент1>],[<аргумент2>]...) – аргументи функції перераховуються через кому в дужках. Перед дужкою не може бути прогалин.

Математичні функції

Математичні функції дозволяють проводити будь-які обчислення.

Функція

Значення, яке повертає функція

Abs(Number)

Atn(Number)

Cos(Number)

Exp(Number)

Log(Number)

Rnd(Number)

Sgn(Number)

Sin(Number)

Sqr (Number)

Tan(Number)

Fix(Number)

Int(Number)

Модуль (абсолютна величина числа) х=ABS (-5) (результат Х= 5)

Арктангенс. Аргумент цієї і інших тригонометричних функцій (Cos, Sin, Tan) повинен задаватися в радіанах (для переводу аргументу, який заданий в градусах, в радіани необхідно помножити його на π/180).

Косинус

Експонента (результат піднесення основи натурального логарифму e в указану степінь). EXP (x) => eх, EXP( 5 ) =>e5

Натуральний логарифм. log (x) = LOG (x) ↔ lnx

Випадкове число з інтервалу [0, 1].Якщо Number <0, то функція повертає кожен раз одне й те саме число, якщо Number>0, то наступне випадкове, якщо Number=0, то випадкове число, яке генерувалося в попередньому разі, Перед викликом функції Rnd() треба використати інструкцію Randomize.

Знак числа

Синус

Квадратний корінь з числа. sqr (x) =>

Тангенс

Обидві функції Int i Fix відкидають дробову частину і повертають ціле число. Різниця між функціями Int i Fix полягає в тому, що для від’ємних значень параметру функція Int повертає найближче від’ємне число, менше або рівне вказаному, а Fix - найближче від’ємне число, більше або рівне вказаному. Х=Int (5.6) (результат Х= 5)

Функції перевірки типів

Ці функції перевіряють, якого типу є змінні. Наведемо ті, які вживаються найчастіше.

Функція

Перевірка

IsDate(Змінна)

IsNumeric(Змінна)

Чи є аргумент датою

Чи є аргумент числом

Функції перевірки типів повертають значення типу Boolean, тобто True, якщо аргумент є датою (для функції IsDate) або числом (для функції IsNumeric) або False в протилежному разі.

Функції перетворення форматів

Перетворення даних з одного типу в інший, здійснюється за допомогою наступних функцій:

Функція

Опис

Val(String)

Str(Number)

Cbool(Expression)

Cbyte(Expression)

CCur(Expression)

Cdate(Expression)

CDbl(Expression)

CInt(Expression)

CLng(Expression)

CSng(Expression)

CVar(Expression)

CStr(Expression)

Повертає підходяще число, яке міститься в рядку (тобто перетворює текст на число). Якщо буде рядок – 12abc, то повернеться число 12.

Повертає значення типу Variant (String), тобто число перетворює в текст. Функція Str обов’язково виділяє позицію для знака, якщо число додатне – ставиться прогалина, якщо від’ємне – ставиться мінус.

Перетворює вираз в тип Boolean

Перетворює вираз в тип Byte

Перетворює вираз в тип Currency

Перетворює вираз в тип Date

Перетворює вираз в тип Double

Перетворює вираз в тип Integer

Перетворює вираз в тип Long

Перетворює вираз в тип Single

Перетворює вираз в тип Variant

Перетворює вираз в тип String (на відміну від Str() не резервує позиції для знаку

Щоб представити числове значення як дату, час, грошовий вираз або в спеціальному форматі, використовується функція Format.

Функція Format повертає значення типу Variant (String), яке містить вираз, відформатований згідно специфікаціям, заданим в опису формату.

Синтаксис:

Format(<вираз>,<специфікація>).

В якості <специфікації> можна задавати як стандартні для VBA іменовані формати так і формати задані користувачем.

Найбільш часто вживані іменовані числові формати:

  • General Number – число, в якому не розділяються тисячі;

  • Currency – використовує настройки країни на панелі управління, відображає дві цифри справа від десяткової крапки;

  • Fixedвідображає щонайменше одну цифру зліва і дві справа від десяткової крапки;

  • Standart - відображає щонайменше одну цифру зліва і дві справа від десяткової крапки і розділяє тисячі;

  • Persentвідображає число у вигляді процентів і відображає дві цифри справа від десяткової крапки.

Покажемо результати роботи функції Fomat, якщо х=6242.56724

Fomat(x,”General Number”) => 6242.56724

Fomat(x,” Currency”) => 6 242.57 грн

Fomat(x,” Fixed”) => 6242.57

Fomat(x,” Standart”) => 6 242.57

Fomat(x,” Persent ”) => 624256.70%

Іменовані формати дати і часу:

  • General Dateвиводить дату і час

  • Long Date - виводить дату у повному форматі дати для Widows

  • Medium Date - виводить дату у звичному форматі дати для Widows

  • Short Date - виводить дату у скороченому форматі дати для Widows

  • Long Time – виводить часи, хвилини та секунди

  • Medium Time – виводить часи та хвилини у 12-часовому форматі

  • Short Time – виводить часи та хвилини у 24-часовому форматі

Розглянемо приклад застосування іменованих форматів дати і часу

Fomat(Now,”Genera Date”) => 01.09.06 15:44:05

Fomat(Now,”Long Date”) => 1 Вересень 2006 р

Fomat(Now,”Medium Date”) => 01-вер-06

Fomat(Now,”Short Date”) => 01.09.06

Fomat(Now,” Long Time”) => 17:52:12

Fomat(Now,”Medium Time”) => 05:52

Fomat(Now,”Short Time”) => 17:52

Якщо користувач хоче сам задати необхідний формат він може застосовувати такі символи:

Символ

Опис

0

#

.

%

:

,

/

E+, E-, e+, e-

d, m, y

h, m, s

Резервує позицію цифрового розряду, відображує незначущі нулі

Резервує позицію цифрового розряду з подавленням незначущих нулів

Резервує позицію знака, що розділяє дробову частину числа і цілу

Резервує процентне відображення числа

Розділяє години, хвилини, секунди в категорії формату Time

Розділяє сотні від тисяч

Розділяє день, місяць, рік в категорії формату Date

Розділяє мантису і порядок в експоненційному форматі

Резервує позицію при виводі дня, місяця, року в категорії формату Date

Резервує позицію при виводі години, хвилини, секунди в категорії формату Time

Приклади:

Формат

Результат

Format(1.2^2, “##.###”)

Format(1.2^2, “##.000”)

Format(Sin(1)*Exp(5), “#.###e+##”)

Format(Now, “hh:mm:ss”)

Format(Now, “dd/mm/yyyy”)

1.44

1.440

1.249e+2

18:57:23

20.01.2000

Функції обробки рядків

Функція

Вираз, що повертає функція

Asc(String)

Chr(Charcode)

Lcase(String)

Ucase(String)

Left(String, n)

Right(String, n)

Mid(String, Start [,n])

Len(String)

Spase(n)

Повертає ASCI код першого знака рядка

Asc(“астра”)=>97

Charcode приймає значення від 0 до 255. Значення від 0 до 31 відповідає управляючим кодам. Chr(13) – перехід на новий рядок, Chr(97)=>“а”

Перетворює рядок до нижнього регістру (робить всі букви малими) Lcase(“АстрА”)=>“астра”

Перетворює рядок до верхнього регістру (робить всі букви великими) Ucase(“АстрА”)=>“АСТРА”

Повертає n лівих символів рядка String

Left(осінь,2)=>”ос”

Повертає n правих символів рядка String

Right(осінь,3)=>”інь

Повертає рядок, який складається з n символів, починаючи з позиції Start рядка (String).

Mid(“осінь”,2,3)=>”сін”

Повертає кількість символів рядка String

Len((осінь)=>5

Повертає рядок з n прогалин Spase(3)=>” ”

Функції часу і дати

Функція

Значення, що повертає функція

Date

Time

Day, Month, Year

Повертає значення типу Variant, що представляє день, місяць, рік в значенні дати

Повертає значення типу Variant, що представляє поточний час системного годинника комп’ютера

Повертає ціле число, яке значить день, місяць, та рік в значенні дати

Аргументом для функцій, що описані вище, має бути вираз типу Datе.

Лекція №5

Алгоритми, що розгалужуються. Оператор присвоєння. Оператор умовного переходу