Арифметичні оператори vba додавання, віднімання, ділення целочисленное; по модулю

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

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

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 відкидає (але не округлює!) Будь-дробовий залишок результату виразу цілочисельного ділення. Наприклад, вирази 22 \ 5 і 24 \ 5 матимуть один і той же результат = 4.

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

Розподіл по модулю (Mod)

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

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

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

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

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

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

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

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

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

Арифметичні оператори VBA