Vba залишок від поділу mod. Арифметичні оператори vba. Розподіл по модулю

💖 Подобається?Поділися з друзями посиланням

Оператор присвоєння (=)

Оператор присвоєння використовується для присвоєння результату виразу змінної.

Операція надання має дві синтаксичні форми:

varname = expression

varname- будь-яка змінна VBA

expression- будь-який вираз VBA

При виконанні оператора присвоєння VBA спочатку обчислює вираз праворуч від оператора присвоювання, а потім зберігає результат виразу змінної, ім'я якої знаходиться ліворуч від знака рівності.

X = 5+7; Y = X + 5; Z = X – Y; A = B; I = I + 1

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

Наприклад, якщо в операторі надання А = А +5, змінна А до операції присвоєння містила значення 7, то після операції вона міститиме значення 12 (7+5).

Слід запам'ятати:

· Можна надавати будь-яку чисельну змінну (або вираз) будь-якої іншої змінної чисельного типу (або змінної типу Variant);

· Якщо присвоюється чисельний вираз типізованої змінної з меншою точністю (наприклад, Double - Long), VBA округляє значення виразу для збігу з точністю змінної, що набуває нового значення;

· Якщо змінної типу String присвоюється змінна типу Variant, що містить число, VBA автоматично перетворює це число на рядок.

Оператор складання (+)

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

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

· Результатом складання типу Single та Long буде Double;

· Результатом складання типу Date з будь-яким іншим типом даних завжди буде Date;

· Якщо результат перевищує діапазон типу Integer, то VBA перетворює його на Long;

· Якщо результат перевищує типи Long, Single, Date, то VBA перетворює його на Double;

· Якщо будь-який операнд у виразі додавання є Null, то результатом виразу додавання також буде Null.

Нагадаємо порядок збільшення точності для чисельних типів даних: Byte, Integer, Long, Single, Double, Currency.

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

Оператор віднімання (-)

Оператор віднімання виконує дві задачі: використовується для віднімання одного числа з іншого; позначає унарний мінус (це знак мінус, що міститься перед числом для вказівки того, що це негативне число). Помістити унарний мінус перед змінною або виразом означає те, що помножити це число на -1.

Обидва операнди у виразі віднімання мають бути чисельними змінними (виразами) або рядковими виразами, яке VBA може перетворити на число. Можна використовувати оператор віднімання для роботи з датами.

VBA використовує ті ж правила для визначення типу даних результату вираження віднімання, що і для виразів, що використовують оператор додавання. Але є доповнення:

· Якщо обидва операнди у виразі є типом Date, то результат виразу матиме тип Double.

Оператор множення (*)

Оператор множення перемножує два числа – результатом виразу множення є добуток двох операндів. Обидва операнди у виразі множення мають бути чисельними виразами чи рядками, які VBA може перетворити на число.

VBA слідує тим самим правилам для визначення типу даних результату виразу множення, що і для виразів, що використовують оператор додавання. У виразах множення всі змінні Variant, які містять значення типу Date, перетворюються на чисельні значення.

Оператор поділу (/)

Оператор поділу з плаваючою точкою виконує звичайне арифметичне поділ своїх операндів.

У виразах розподілу перший операнд ділиться на другий операнд - результатом розподілу є приватне.

Обидва операнди у виразі поділу з плаваючою точкою повинні бути чисельними виразами або рядками, які VBA може перетворити на число.

Якщо хоча б один операнд у виразі розподілу має тип Null, то результат розподілу також буде Null.

Типом даних операції поділу з плаваючою точкою є Double, крім:

Обидва операнди у виразі поділу мають тип Integer або Single - результат Single;

Якщо результат виразу не переповнює діапазон значень типу Single.

Цілочисельний поділ (\)

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

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

Перед виконанням операції цілісного поділу VBA округляє кожен операнд до типу Integer або Long (такий самий тип має і результат цілого поділу).

VBA відкидає (але не округляє!) будь-який дробовий залишок результату вираження цілісного поділу. Наприклад, вирази 225 і 245 будуть мати один і той же результат = 4.

Якщо хоча б один операнд у виразі цілісного розподілу має тип Null, то результат розподілу також буде Null.

Поділ за модулем (Mod)

Розподіл по модулю як би доповнює цілий поділ. У розподілі по модулю вираз повертає лише залишок операції розподілу як ціле.

22 Mod 5 = 2

24 Mod 5 = 4

25 Mod 5 = 0

Інші властивості поділу по модулю ідентичні до цілісного поділу.

Зведення у ступінь (^)

Оператор зведення на ступінь зводить число на ступінь.

5 ^ 3 =125

Обидва оператори у вираженні зведення у ступінь мають бути чисельними виразами чи рядками, які VBA може перетворити на числа.

Операнд ліворуч від оператора зведення в ступінь може бути негативним числом тільки якщо операнд справа є цілим.

Результат виразу має тип Double.

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

Підіб'ємо підсумок вищевикладеному:

ЛОГІЧНІ ОПЕРАТОРИ VBA

Як операнда для логічного оператора можна використовувати будь-який дійсний вираз, що має результат типу Boolean, а також число, яке може бути перетворене на значення Boolean.

Результатом логічної операції є значення типу Boolean (або Null, якщо хоча б один із операндів має значення Null).

Логічний оператор AND

СИНТАКСИС:

Операнд_1 AND Операнд_2

Оператор AND виконує логічну кон'юнкцію.

Результатом цієї операції є значення True, тільки коли обидва операнди мають значення True, інакше - False.

Таблиця істинності

Оператор AND можна використовувати для кількох операндів:

(5<7) AND (4>3) AND (5=6) результатом буде False

Незалежно від кількості операндів результатом логічної операції AND буде True лише у тому випадку, коли всі операнди вирази матимуть значення True. У будь-якому іншому випадку результатом буде False. Зверніть увагу, що операнди полягають у круглі дужки. VBA спочатку обчислює значення кожного операнда всередині дужок, а потім уже весь вираз повністю.

Логічний оператор OR

СИНТАКСИС:

Операнд_1 OR Операнд_2

Оператор OR виконує логічну диз'юнкцію.

Результатом цієї операції є значення True, якщо хоча б один з операндів має значення True, інакше – False.

Таблиця істинності

Оператор OR можна використовувати для кількох операндів:

(5<7) OR (4>3) OR (5=6) результатом буде True

Незалежно від кількості операндів результатом логічної операції OR завжди буде True в тому випадку, якщо хоча б один з операндів виразу матиме значення True. Інакше результатом буде False.

Оператори AND та OR можна комбінувати:

((5<7) AND (4>3)) OR (5=6) результатом буде True

Логічний оператор NOT

СИНТАКСИС:

NOT Операнд

Оператор NOT виконує логічне заперечення.

Оператор NOT використовує лише один операнд.

Таблиця істинності

Оператори AND OR NOT можна комбінувати:

((5<7) AND (4>3)) OR NOT (5=6) результатом буде True

Логічний оператор XOR

СИНТАКСИС:

Операнд_1 XOR Операнд_2

Оператор XOR виконує логічний виняток.

Результатом цієї операції є значення True, якщо операнди мають різні значення, інакше – False.

Таблиця істинності

((5<7) AND (4>3)) OR NOT (5=6) XOR (5=5) результатом буде False

Логічний оператор EQV

СИНТАКСИС:

Операнд_1 EQV Операнд_2

Оператор EQV – це оператор логічної еквівалентності.

Результатом цієї операції є значення True, якщо операнди мають однакові значення, інакше – False.

Таблиця істинності

((5<7) AND (4>3)) OR NOT (5=6) EQV (5=5) результатом буде True.

Оператори порівняння

Зазвичай операції порівняння використовують у операторах організації циклів до ухвалення будь-якого рішення про подальшому ході виконання операцій.

Результатом будь-якої операції порівняння є значення Boolean: True, False.

Якщо обидва операнди у вираженні порівняння мають той самий тип даних, VBA виконує просте порівняння цього типу.

Якщо обидва операнди у виразі порівняння мають певні типи і ці типи не сумісні, VBA видає повідомлення про помилку розбіжності типів.

Якщо один або обидва операнди у виразі порівняння є змінними типу Variant, VBA намагається перетворити тип Variant на будь-який сумісний тип.

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

Математичні оператори

Основні математичні оператори VBA перелічені у таблиці нижче.

У правому стовпчику таблиці вказано пріоритет операторів, прийнятий за умовчанням за відсутності дужок. Додаючи у вираз дужки, можна змінювати порядок виконання операторів VBA за власним бажанням.

Рядкові оператори

Основний рядковий оператор в Excel VBA– це оператор конкатенації & (злиття):

Оператори порівняння

Оператори порівняння використовуються для порівняння двох чисел або рядків та повертають логічне значення типу Boolean(True або False). Основні оператори порівняння Excel VBA перераховані в цій таблиці:

Логічні оператори

Логічні оператори, як і оператори порівняння, повертають логічне значення типу Boolean(True або False). Основні логічні оператори Excel VBA перераховані в таблиці нижче:

У наведеній вище таблиці перераховані в повному обсязі логічні оператори, доступні в VBA. Повний списоклогічних операторів можна знайти на сайті Visual Basic Developer Center.

Вбудовані функції

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

Функція Дія
Abs Повертає абсолютну величину заданого числа.
  • Abs(-20)повертає значення 20;
  • Abs(20)повертає значення 20
Chr Повертає символ ANSI, що відповідає числовому значенню параметра.
  • Chr(10)повертає перенесення рядка;
  • Chr(97)повертає символ a.
Date Повертає поточну системну дату.
DateAdd Додає певний часовий інтервал до заданої дати. Синтаксис функції:

DateAdd( інтервал , число , дата )

Де аргумент інтервалвизначає тип часового інтервалу, що додається до заданої датіу кількості, зазначеній у аргументі число .

Аргумент інтервалможе приймати одне з наступних значень:

  • DateAdd(“d”, 32, “01/01/2015”)додає 32 дні до дати 01/01/2015 і таким чином повертає дату 02/02/2015.
  • DateAdd(“ww”, 36, “01/01/2015”)додає 36 тижнів до дати 01/01/2015 та повертає дату 09/09/2015.
DateDiff Обчислює кількість певних часових інтервалів між двома заданими датами.
  • DateDiff(“d”, “01/01/2015”, “02/02/2015”)обчислює кількість днів між датами 01/01/2015 та 02/02/2015, повертає результат 32.
  • DateDiff("ww", "01/01/2015", "03/03/2016")обчислює кількість тижнів між датами 01/01/2015 та 03/03/2016, повертає результат 61.
Day Повертає ціле число, що відповідає дню місяця у заданій даті.

Приклад: Day(“29/01/2015”)повертає число 29

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

Приклад: Hour(“22:45:00”)повертає число 22

InStr Приймає як аргументи ціле число і два рядки. Повертає позицію входження другого рядка всередині першого, починаючи пошук позиції, заданої цілим числом.
  • InStr(1, "От шукане слово", "слово")повертає число 13
  • InStr(14, "От шукане слово, а ось ще шукане слово", "слово")повертає число 38

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

Int Повертає цілу частину заданого числа.

Приклад: Int(5.79)повертає результат 5.

Isdate Повертає Trueякщо задане значення є датою, або False- Якщо датою не є.
  • IsDate(“01/01/2015”)повертає True;
  • IsDate(100)повертає False.
IsError Повертає Trueякщо задане значення є помилкою, або False- Якщо помилкою не є.
IsMissing Як аргумент функції передається ім'я необов'язкового аргументу процедури. IsMissingповертає Trueякщо для аналізованого аргументу процедури не передано значення.
IsNumeric Повертає Trueякщо задане значення може бути розглянуто як число, в іншому випадку повертає False.
Left Повертає задану кількість символів від початку переданого рядка. Синтаксис функції ось такий:

Left( рядок , довжина )

де рядок– це вихідний рядок, а довжина– кількість символів, що повертаються, рахуючи від початку рядка.

  • Left("абвгдежзіклмн", 4)повертає рядок "абвг";
  • Left("абвгдежзіклмн", 1)повертає рядок "а".
Len Повертає кількість символів у рядку.

Приклад: Len("абвгдеж")повертає число 7

Month Повертає ціле число, що відповідає місяцю у заданій даті.

Приклад: Month(“29/01/2015”)повертає значення 1.

Mid Повертає задану кількість символів із середини переданого рядка. Синтаксис функції:

Mid( рядок , початок , довжина )

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

  • Mid("абвгдежзиклмн", 4, 5)повертає рядок "дежз";
  • Mid(“абвгдежзиклмн”, 10, 2)повертає рядок "кл".
Minute Повертає ціле число, що відповідає кількості хвилин у заданому часі. Minute(“22:45:15”)повертає значення 45.
Now Повертає поточну системну дату та час.
Right Повертає задану кількість символів від кінця переданого рядка. Синтаксис функції:

Right( рядок , довжина )

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

  • Right("абвгдежзіклмн", 4)повертає рядок "клмн";
  • Right("абвгдежзіклмн", 1)повертає рядок "н".
Second Повертає ціле число, яке відповідає кількості секунд у заданому часі.

Приклад: Second(“22:45:15”)повертає значення 15.

Sqr Повертає квадратний корінь числової величини, переданої аргументом.
  • Sqr(4)повертає значення 2;
  • Sqr(16)повертає значення 4.
Time Повертає поточний час.
Ubound Повертає верхній індекс виміру заданого масиву.

Примітка:Для багатовимірних масивів як необов'язковий аргумент може бути зазначено, індекс якого саме вимірювання потрібно повернути. Якщо не вказано, то за умовчанням 1.

Оператор присвоєння (=)

Оператор присвоєння використовується для присвоєння результату виразу змінної.

Операція надання має дві синтаксичні форми:

1 Let varname = expression
2 varname = expression


varname- будь-яка змінна VBA

expression- будь-який вираз VBA


Перший варіант операції присвоєння використовувався в ранніх мовах програмування Basic. Другий варіант використовується у сучасній версії VBA.


При виконанні оператора присвоєння VBA спочатку обчислює вираз праворуч від оператора присвоювання, а потім зберігає результат виразу змінної, ім'я якої знаходиться ліворуч від знака рівності.


X = 5+7; Y = X + 5; Z = X – Y; A = B; I = I + 1


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

Наприклад, якщо в операторі надання А = А +5, змінна А до операції присвоєння містила значення 7, то після операції вона міститиме значення 12 (7+5).

Слід запам'ятати:

  • Можна надавати будь-яку чисельну змінну (або вираз) будь-якої іншої змінної чисельного типу (або змінної типу Variant);
  • Якщо присвоюється чисельний вираз типізованої змінної з меншою точністю (наприклад, Double - Long), VBA округляє значення виразу для збігу з точністю змінної, що набуває нового значення;
  • Якщо змінної типу String присвоюється змінна типу Variant, що містить число, VBA автоматично перетворює це число на рядок.

Оператор складання (+)

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


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

  • Результатом складання типу Single та Long буде Double;
  • Результатом складання типу Date із будь-яким іншим типом даних завжди буде Date;
  • Якщо результат перевищує діапазон типу Integer, то VBA перетворює його на Long;
  • Якщо результат перевищує типи Long, Single, Date, то VBA перетворює їх у Double;
  • Якщо будь-який операнд у виразі додавання є Null, то результатом виразу додавання також буде Null.

Нагадаємо порядок збільшення точності для чисельних типів даних: Byte, Integer, Long, Single, Double, Currency.

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

Оператор віднімання (-)

Оператор віднімання виконує дві задачі: використовується для віднімання одного числа з іншого; позначає унарний мінус (це знак мінус, що міститься перед числом для вказівки того, що це негативне число). Помістити унарний мінус перед змінною або виразом означає те, що помножити це число на -1.


Обидва операнди у виразі віднімання мають бути чисельними змінними (виразами) або рядковими виразами, яке VBA може перетворити на число. Можна використовувати оператор віднімання для роботи з датами.

VBA використовує ті ж правила для визначення типу даних результату вираження віднімання, що і для виразів, що використовують оператор додавання. Але є доповнення:
Якщо обидва операнди у виразі є типом Date, то результат виразу матиме тип Double.

Оператор множення (*)

Оператор множення перемножує два числа – результатом виразу множення є добуток двох операндів. Обидва операнди у виразі множення мають бути чисельними виразами чи рядками, які VBA може перетворити на число.

VBA слідує тим самим правилам для визначення типу даних результату виразу множення, що і для виразів, що використовують оператор додавання. У виразах множення всі змінні Variant, які містять значення типу Date, перетворюються на чисельні значення.

Оператор поділу (/)

Оператор поділу з плаваючою точкою виконує звичайне арифметичне поділ своїх операндів.

У виразах розподілу перший операнд ділиться на другий операнд - результатом розподілу є приватне.

Обидва операнди у виразі поділу з плаваючою точкою повинні бути чисельними виразами або рядками, які VBA може перетворити на число.

Якщо хоча б один операнд у виразі розподілу має тип Null, то результат розподілу також буде Null.

Типом даних операції поділу з плаваючою точкою є Double, крім:

  • Обидва операнди у виразі поділу мають тип Integer або Single - результат Single;
  • Якщо результат виразу не переповнює діапазон значень типу Single.

Цілочисельний поділ (\)

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

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

Перед виконанням операції цілісного поділу VBA округляє кожен операнд до типу Integer або Long (такий самий тип має і результат цілого поділу).

VBA відкидає (але не округляє!) будь-який дробовий залишок результату вираження цілісного поділу. Наприклад, вирази 225 і 245 будуть мати один і той же результат = 4.

Якщо хоча б один операнд у виразі цілісного розподілу має тип Null, то результат розподілу також буде Null.

Поділ за модулем (Mod)

Розподіл по модулю як би доповнює цілий поділ. У розподілі по модулю вираз повертає лише залишок операції розподілу як ціле.
22 Mod 5 = 2
24 Mod 5 = 4
25 Mod 5 = 0

Інші властивості поділу по модулю ідентичні до цілісного поділу.

Зведення у ступінь (^)

Оператор зведення на ступінь зводить число на ступінь.



Обидва оператори у вираженні зведення у ступінь мають бути чисельними виразами чи рядками, які VBA може перетворити на числа.

Операнд ліворуч від оператора зведення в ступінь може бути негативним числом тільки якщо операнд справа є цілим.

Результат виразу має тип Double.

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


Підіб'ємо підсумок вищевикладеному.

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

Вираз - це значення чи група значень, яка виражає окреме значення. Результат виразу – одне значення певного типу даних. Знаки (позначення) операцій використовуються для дій над певними значеннями у виразах. Для присвоєння результату виразу змінної використовується оператор присвоєння (=), який зберігає будь-яке значення, представлене виразом праворуч від оператора присвоєння в комірці пам'яті, яку посилається змінна ліворуч від цього оператора.

У всіх операціях наведених нижче, обидва операнди повинні бути чисельними виразами або рядками, які VBA може перетворити на число.

Додавання

Знак (+) використовується для виконання операції додавання. Доданки повинні бути чисельними виразами, рядками, які VBA може перетворити на числа чи датами, з якими також можливі арифметичні дії.

Sub Slozhenie() "Приклад арифметичного виразу зі знаком "+" Dim A1, A2, A3 As Integer "оголошення змінних A1=1 "присвоювання значення 1 змінної А1 A2=2 "присвоювання значення 2 змінної А2 A3=A1+A2 "привласнення результату додавання змінної А3 MsgBox A3 "виведення А3 у діалоговому вікні End Sub

Тип даних результату виразу додавання зазвичай той самий, як і найточніший тип у тому виразі за деякими винятками. Усі винятки із цього правила наочно представлені у прикладах.

Віднімання

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

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

Правило 1. Якщо у вираженні віднімання один з операндів є типом Date, то результат виразу матиме тип Date.

Правило 2. Якщо у вираженні віднімання обидва операнда є типом Date, то результат виразу матиме тип Double.

Sub Vychitanie() "Приклад арифметичного виразу зі знаком "-" Dim D1, D2 As Date "оголошення змінних D1=Now "присвоювання значення поточної дати змінної D1 D2=Now-5 "привласнення значення дати змінної D2 MsgBox TypeName(D2), vbOKOnly , "Now-5" MsgBox TypeName(D1-D2), vbOKOnly, "D1-D2" End Sub

Розмноження

Знак (*) використовується для виконання операції множення, результатом цієї операції є добуток операндів. Для визначення типу даних результату виразу множення VBA використовує ті ж правила, що і для виразів, що використовують додавання. У виразах множення всі змінні Variant, що містять значення типу Date, перетворюються на чисельні значення.

"Приклад арифметичних виразів зі знаком "*" 4*10 "множення 4 на 10 MyVar*2 "множення MyVar на 2 MyVar*OtherVar "множення MyVar на OtherVar

Поділ

Знак (/) використовується виконання операції поділу, цей знак називають знаком поділу дійсних чисел. У виразах розподілу один операнд ділиться на інший, а результатом розподілу є приватне.

"Приклад арифметичних виразів зі знаком "/" 10/4 "розподіл 10 на 4 MyVar/2 "розподіл MyVar на 2 MyVar/OtherVar "розподіл MyVar на OtherVar

Якщо будь-який операнд у виразі поділу має значення Null, то результатом виразу також Null. Тип даних у виразах поділу дійсних чисел зазвичай Double, але є виняток.

Якщо у виразі поділу обидва операнди мають тип Integer або Single, то результат виразу поділу має тип Single. Якщо результат переповнює діапазон типу Single, то VBA перетворює їх у тип Double.

Цілочисельний поділ

Знак (\) використовується виконання операції целочисленного поділу, у якому результатом поділу завжди є ціле число без дробової частини. VBA не округляє приватне цілого поділу, а просто вкорочує його до цілого числа, відкидаючи дробову частину.

Тип даних результату виразу цілісного поділу - або Integer, або Long. VBA використовує найменший тип даних, що відповідає результату виразу.

"Приклад арифметичних виразів зі знаком "\" 10\4 "поділ 10 на 4; повертає значення 2 MyVar\2 "розподіл MyVar на 2 MyVar\OtherVar "розподіл MyVar на OtherVar

Розподіл по модулю

Знак (Mod) використовується виконання операції поділу по модулю. При розподілі за модулем вираз повертає лише залишок від розподілу як ціле.

"Приклад арифметичних виразів зі знаком "Mod" 8 Mod 2 "повертає значення 0; 5.1 Mod 3 "повертає значення 2; 6 Mod MyVar "якщо MyVar містить 3, повертає 0

Доступне для розуміння пояснення цієї математичної операції наведено на одному із форумів програмістів. Наведу цитату звідти: уяви, що є повна 50л каністра і 3л банку. І ти починаєш вичерпувати з каністри банкою воду (набирати можна тільки повну банку). 48л вичерпав, залишилося 2 літри. ." Тобто 50 Mod 3 повертає 2.

Тип даних результату виразу поділу по модулю - це Integer чи Long. VBA використовує найменший тип, який підходить для виразу.

Зведення в ступінь

Знак (^) використовується для виконання операції зведення у ступінь числа або виразу. Показник ступеня показує, скільки разів число чи вираз має бути помножено на себе.

"Приклад арифметичного виразу зі знаком "^" 3 ^ 3 "це те саме, що і 3*3*3, повертає значення 27


Оператори VBA: арифметичні, логічні, порівняння, присвоєння

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

Арифметичних операторів у VBA всього 7. Чотири стандартні: додавання (+), віднімання (-), множення (*), поділ (/) та ще три:

  • зведення у ступінь (^), наприклад 2^3 = 8 ;
  • цілісний поділ (\). Діляє перше число на друге, відкидаючи (не округляючи) дрібну частину. Наприклад, 5\2 = 2 ;
  • розподіл за модулем (Mod). ділить перше число на друге, повертаючи тільки залишок від розподілу. Наприклад, 5 Mod 2 = 1.

Оператор присвоєння VBA - знак рівності. Можна записувати так:

Let nVar = 10

а можна ще простіше:

nVar = 10

У другому випадку не плутайте знак рівності з оператором рівності.

Вираз

nVar = 10

означає "привласнити змінної nVar значення 10", а якщо рядок виглядає так:

If (nVar = 10)

то це означає "якщо значення змінної nVar дорівнює 10".

Якщо змінної необхідно призначити об'єкт, робиться це іншими методами.

Операторів порівняння в VBA всього 8:

  • рівність (=), наприклад, If (nVar = 10);
  • більше, ніж і менше, ніж (> і<), например, If (nVar > 10);
  • більше чи одно і менше чи одно (>= і<=), например, If (nVar >= 10);
  • не дорівнює (<>), наприклад, If(nVar<>10) ;
  • порівняння об'єктів (Is). Визначає, чи посилаються об'єктні змінні на той самий об'єкт або на різні, наприклад, If(obj1 is obj2);
  • подібність (Like). Порівнює рядковий об'єкт із шаблоном та визначає, чи підходить шаблон.

Оператори порівняння завжди повертають true або false - true, якщо твердження є істинним, і false, якщо хибно.

Трохи для порівняння строкових значень:

  • у порівнянні рядкових значень регістр враховується;
  • прогалини у рядкових значеннях також враховуються;
  • при порівнянні текстових рядків на більше/менше за умовчанням порівнюються просто двійкові кодисимволів – які більше чи менше. Якщо потрібно використовувати той порядок, що йде в алфавіті, можна скористатися командою

Option Compare Text

Трохи докладніше про оператора Like. Загальний синтаксис виглядає як

Вираз1 Like Вираз2

При цьому Вираз1 - будь-яке текстовий вираз VBA, а Вираз2 - шаблон, який передається оператору Like. У цьому шаблоні можна використовувати спеціальні символи підстановки (див. Табл. 3.1)

Табл. 3.1Підстановочні символи для оператора LIKE

Дуже часто під час перевірки кількох умов використовуються логічні оператори:

  • AND - логічне І, повинні бути істинними обидві умови;
  • OR - логічне АБО, має бути істинним хоча б одну з умов;
  • NOT - логічне заперечення, що повертає TRUE, якщо умова хибна;
  • XOR – логічний виняток. У виразі E1 XOR E2 повертає TRUE, якщо E1 = TRUE або тільки E2 = TRUE, інакше - FALSE;
  • EQV - еквівалентність двох виразів, що повертає TRUE, якщо вони мають однакове значення;
  • IMP - імплікація, що повертає FALSE, якщо E1 = TRUE і E2 = FALSE, інакше - TRUE.

Пам'ятати треба про AND, OR, NOT, інші логічні оператори застосовуються рідко.

Майже у будь-якій програмі VBA використовуються оператори конкатенації. У VBA їх два - + або. Рекомендується завжди використовувати &, тому що:

  • при використанні & здійснюється автоматичне перетворення числових значень на рядкові - немає небезпеки припуститися помилки;
  • при використанні оператора + додавання рядкового значення зі значенням типу Null дає Null.

MsgBox "Повідомлення користувача" & vUserName

Порядок застосування операторів можна регулювати за допомогою круглих дужок.



Розповісти друзям