Аритметични оператори vba. Оператори и вградени функции VBA Vba остатък mod

VBA оператори: аритметика, логика, сравнения, присвоявания

Операторе най-малката единица VBA код, която може да бъде изпълнена. Изявление може да декларира или дефинира променлива, да зададе опция за VBA компилатор или да извърши някакво действие в програма.

Във VBA има само 7 аритметични оператора. Четири стандартни: събиране (+), изваждане (-), умножение (*), деление (/) и още три:

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

Операторът за присвояване във VBA е знакът за равенство. Можете да го напишете така:

Нека nVar = 10

или още по-просто:

nVar = 10

Във втория случай не бъркайте знака за равенство с оператора за равенство.

Изразяване

nVar = 10

означава "задайте nVar на 10" и ако редът изглежда така:

Ако (nVar = 10)

тогава това означава "ако стойността на nVar е 10".

Ако даден обект трябва да бъде присвоен на променлива, това се прави по други начини.

Във VBA има само 8 оператора за сравнение:

  • равенство (=), например, Ако (nVar = 10);
  • по-голямо от и по-малко от (> и<), например, Ако (nVar > 10);
  • по-голямо или равно на и по-малко или равно на (>= и<=), например, Ако (nVar >= 10);
  • не е равно (<>), Например, Ако (nVar<>10) ;
  • сравнение на обекти (I). Определя дали обектните променливи се отнасят към един и същ обект или към различни, напр. Ако (obj1 е obj2);
  • сходство (Харесва ми). Сравнява низов обект с шаблон и определя дали шаблонът съвпада.

Операторите за сравнение винаги връщат true или false - true, ако твърдението е вярно, и false, ако е невярно.

Малко за сравняването на низови стойности:

  • При сравняване на низови стойности се взема предвид регистърът на буквите;
  • интервалите в низовите стойности също се вземат предвид;
  • когато сравняват текстови низове за повече/по-малко, отколкото по подразбиране, те сравняват просто двоични кодовезнаци - които са повече или по-малко. Ако трябва да използвате реда, който върви в азбуката, можете да използвате командата

Опция Сравнете текст

Още малко за оператора Like. Общият му синтаксис изглежда така

Израз1 Като Израз2

В този случай Expression1 е всеки текстов израз на VBA, а Expression2 е шаблон, който се предава на оператора Like. Можете да използвате специални заместващи символи в този модел (вижте Таблица 3.1)

Таблица 3.1Заместващи знаци за оператора LIKE

Много често при проверка на няколко условия се използват логически оператори:

  • И - логическо И, и двете условия трябва да са верни;
  • ИЛИ - логическо ИЛИ, поне едно от условията трябва да е вярно;
  • NOT - логическо отрицание, връща TRUE, ако условието е невярно;
  • XOR е логично изключение. В израз E1 XOR, E2 връща TRUE, ако само E1 = TRUE или само E2 = TRUE, в противен случай FALSE;
  • EQV - еквивалентност на два израза, връща TRUE, ако имат еднаква стойност;
  • IMP - импликация, връща FALSE, ако E1 = TRUE и E2 = FALSE, в противен случай TRUE.

Трябва да запомните И, ИЛИ, НЕ, други логически оператори се използват рядко.

Почти всяка програма на VBA използва оператори за конкатенация. Има два от тях във VBA - + или &. Препоръчва се винаги да се използва & защото:

  • когато използвате &, числовите стойности автоматично се преобразуват в низови стойности - няма опасност да направите грешка;
  • Когато използвате оператора +, добавянето на низова стойност към стойност от тип Null произвежда Null.

MsgBox „Съобщение до потребителя“ & vUserName

Редът, в който се използват операторите, може да се контролира с помощта на скоби.

Когато пишете VBA код в Excel, набор от вградени оператори се използват на всяка стъпка. Тези оператори са разделени на математически, низови, сравнителни и логически оператори. След това ще разгледаме подробно всяка група оператори.

Математически оператори

Основните математически оператори на VBA са изброени в таблицата по-долу.

Дясната колона на таблицата показва приоритета на оператора по подразбиране при липса на скоби. Като добавите скоби към израз, можете да промените реда, в който се изпълняват операторите на VBA, както желаете.

Стрингови оператори

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

Оператори за сравнение

Операторите за сравнение се използват за сравняване на две числа или низове и връщане на булева стойност като Булева стойност(Истина или лъжа). Основните оператори за сравнение на Excel VBA са изброени в тази таблица:

Логически оператори

Логическите оператори, подобно на операторите за сравнение, връщат булева стойност на тип Булева стойност(Истина или лъжа). Основните логически оператори на Excel VBA са изброени в таблицата по-долу:

Таблицата по-горе не изброява всички булеви оператори, налични във VBA. Пълен списъкБулевите оператори могат да бъдат намерени в Центъра за разработчици на Visual Basic.

Вградени функции

Във VBA има много вградени функции, които могат да се използват при писане на код. По-долу са някои от най-често използваните:

функция Действие
Коремни мускули Връща абсолютната стойност на дадено число.
  • Корем (-20)връща стойността 20;
  • Корем (20)връща стойността 20.
Chr Връща ANSI знака, съответстващ на числовата стойност на параметъра.
  • Chr (10)връща прекъсване на ред;
  • Chr (97)връща характер а.
Дата Връща текущата системна дата.
Добавяне на дата Добавя конкретен интервал от време към дадена дата. Синтаксис на функцията:

Добавяне на дата( интервал , номер , дата )

Къде е аргументът интервалдефинира вида на интервала от време, добавен към дадено датав размера, посочен в аргумента номер .

Аргумент интервалможе да приема една от следните стойности:

  • 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.
ден Връща цяло число, съответстващо на деня от месеца в дадената дата.

Пример: Ден („29.01.2015 г.“)връща числото 29.

час Връща цяло число, съответстващо на броя часове в даденото време.

Пример: Час („22:45:00“)връща числото 22.

InStr Приема цяло число и два низа като аргументи. Връща позицията на срещане на втория низ в рамките на първия, започвайки търсенето от позицията, указана от цялото число.
  • InStr(1, „Ето думата, която търсите“, „дума“)връща числото 13.
  • InStr(14, „Ето думата за търсене и ето друга дума за търсене“, „дума“)връща числото 38.

Забележка:Аргументът номер може да не е посочен, в който случай търсенето започва от първия знак на низа, посочен във втория аргумент на функцията.

Вътр Връща цялата част от даденото число.

Пример: Int (5,79)връща резултат 5.

Isdate Се завръща Вярноако дадената стойност е дата, или Невярно– ако не е дата.
  • IsDate(“01/01/2015”)се завръща Вярно;
  • IsDate (100)се завръща Невярно.
IsError Се завръща Вярно, ако дадената стойност е грешка, или Невярно– ако не е грешка.
Липсва Името на незадължителен аргумент на процедура се предава като аргумент на функцията. Липсвасе завръща Вярно, ако не е подадена стойност за въпросния аргумент на процедурата.
IsNumeric Се завръща Вярноако дадената стойност може да се разглежда като число, в противен случай връща Невярно.
Наляво Връща зададения брой знаци от началото на предадения низ. Синтаксисът на функцията е следният:

Наляво( линия , дължина )

Където линияе оригиналният низ и дължина– броя на върнатите знаци, считано от началото на реда.

  • Ляво (“abvgdezziklmn”, 4)връща низа “abvg”;
  • Ляво (“abvgdezziklmn”, 1)връща низа "a".
Лен Връща броя знаци в низ.

Пример: Len („abvgdez“)връща числото 7.

месец Връща цяло число, съответстващо на месеца в дадената дата.

Пример: Месец („29.01.2015 г.“)връща стойност 1.

средата Връща определен брой знаци от средата на подадения низ. Синтаксис на функцията:

Средно( линия , Започнете , дължина )

Където линияе оригиналният низ, Започнете– позиция на началото на извлечения низ, дължина– броя знаци за извличане.

  • Среден ("abvgdezziklmn", 4, 5)връща низа "къде";
  • Среден ("abvgdezziklmn", 10, 2)връща низа „cl“.
минута Връща цяло число, съответстващо на броя минути за дадено време. Пример: Минута („22:45:15“)връща стойността 45.
Сега Връща текущата системна дата и час.
вярно Връща посочения брой знаци от края на предадения низ. Синтаксис на функцията:

точно( линия , дължина )

Където линияе оригиналният низ и дължина– това е броят символи, които трябва да бъдат извлечени, като се брои от края на дадения низ.

  • Вдясно (“abvgdezziklmn”, 4)връща низа “clmn”;
  • Вдясно (“abvgdezziklmn”, 1)връща низа "n".
Второ Връща цяло число, съответстващо на броя секунди в даденото време.

Пример: Второ („22:45:15“)връща стойността 15.

пл Връща корен квадратен от числовата стойност, предадена като аргумент.
  • Sqr (4)връща стойност 2;
  • Sqr (16)връща стойността 4.
време Връща текущото системно време.
Ubound Връща горния индекс на измерението на посочения масив.

Забележка:За многомерни масивинезадължителен аргумент може да посочи индекса на кое измерение трябва да бъде върнато. Ако не е указано, по подразбиране е 1.

Нека да разгледаме по-подробно как VBA извършва аритметични операции като събиране, изваждане, умножение, деление и степенуване, както и специални операции като целочислено деление и модулно деление. Таблицата по-долу показва знаците за операции, използвани при писане на аритметични VBA изрази.

Изразът е стойност или група от стойности, изразяващи една стойност. Резултатът от израз е единична стойност от определен тип данни. Операционните знаци (нотации) се използват за работа със специфични стойности в изрази. За да присвоите резултата от израз на променлива, използвайте оператора за присвояване (=), който съхранява каквато и да е стойност, представена от израза вдясно от оператора за присвояване в мястото на паметта, посочено от променливата вляво от този оператор.

Във всички операции по-долу и двата операнда трябва да са числови изрази или низове, които VBA може да конвертира в число.

Допълнение

Знакът (+) се използва за извършване на операцията за добавяне. Термините трябва да бъдат числови изрази, низове, които VBA може да преобразува в числа, или дати, които също могат да се използват за аритметика.

Sub Slozhenie() "Пример за аритметичен израз със знак "+" Dim A1, A2, A3 As Integer "деклариране на променливи A1=1 "присвояване на стойност 1 на променлива A1 A2=2 "присвояване на стойност 2 на променлива A2 A3=A1 +A2 "присвояване на резултат добавяне на променлива A3 MsgBox A3 "изход на A3 в диалоговия прозорец End Sub

Типът данни на резултата от израз за събиране обикновено е същият като най-точния тип в този израз, с няколко изключения. Всички изключения от това правило са ясно представени в примерите.

Изваждане

Знакът (-) се използва за извършване на операция за изваждане, както и за означаване на отрицателни числа (когато е поставен пред променлива или израз и означава същото като умножение по -1). Знак минус, поставен пред число, за да покаже, че числото е отрицателно, се нарича унарен знак минус.

За да определи типа данни на резултата от израз за изваждане, VBA следва същите правила като за изрази, които използват оператора за добавяне, но има две допълнителни правила.

Правило 1. Ако в израз за изваждане един от операндите е от тип Дата, тогава резултатът от израза ще бъде от тип Дата.

Правило 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 литра и започвате да черпите вода от бидона (можете да напълните само пълен буркан). , остават 2 литра. Това е остатъкът от деленето на 50 на 3 по модул. С други думи, 50 Mod 3 връща 2.

Типът данни на резултата от израз за модулно деление е Integer или Long. VBA използва най-малкия тип, който е подходящ за резултата от израза.

степенуване

Знакът (^) се използва за извършване на операцията за степенуване на число или израз. Показателят показва колко пъти едно число или израз трябва да се умножи сам по себе си.

"Пример за аритметичен израз със знак "^" 3 ^ 3 "е същото като 3*3*3, връща стойността 27


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

Операторът за присвояване се използва за присвояване на резултата от израз към променлива.

Операторът за присвояване има две синтактични форми:

име на променлива = израз

varname- всяка променлива на VBA

изразяване- произволен VBA израз

Когато изпълнявате оператор за присвояване, VBA първо оценява израза отдясно на оператора за присвояване и след това съхранява резултата от израза в променливата, чието име е вляво от знака за равенство.

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

Начинаещите потребители понякога не разбират значението на последната операция за присвояване, когато и лявата, и дясната част на операцията съдържат една и съща променлива. В този случай резултатът от изчисляването на израза от дясната страна на оператора за присвояване първо се поставя в междинна памет и след това този резултат се присвоява на променливата от лявата страна.

Например, ако в оператора за присвояване A = A +5 променливата A преди операцията за присвояване е съдържала стойност 7, то след операцията тя ще съдържа стойност 12 (7+5).

Неща, които трябва да запомните:

· Можете да присвоите всяка числова променлива (или израз) на всяка друга числова променлива (или тип вариант);

· Ако присвоите числов израз на въведена променлива с по-малка точност (например Double - Long), VBA закръгля стойността на израза, за да съответства на точността на променливата, получаваща новата стойност;

· Ако променлива от тип String е присвоена на променлива от тип Variant, която съдържа число, VBA автоматично преобразува числото в низ.

Оператор за добавяне (+)

Операторът за събиране извършва просто събиране. И двата операнда трябва да са числови изрази или низове, които VBA може да конвертира в число. Операторът за събиране може също да се използва за извършване на аритметични операции върху данни за дата.

Типът данни на резултата от израз за добавяне обикновено е същият като най-точния тип в този израз. Но има изключения:

· Резултатът от събирането на тип Single и Long ще бъде Double;

· Резултатът от добавяне на тип Дата към всеки друг тип данни винаги ще бъде Дата;

· Ако резултатът надхвърля диапазона от тип 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

Останалите свойства на модулното деление са идентични с целочисленото деление.

степенуване (^)

Операторът за степенуване повдига число на степен.

5 ^ 3 =125

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

Операндът отляво на оператора за степенуване може да бъде отрицателно число само ако операндът отдясно е цяло число.

Резултатът от израза е от тип Double.

Ако поне един операнд в израз е от тип Null, тогава резултатът от степенуването също ще бъде Null.

Нека обобщим горното:

ЛОГИЧЕСКИ ОПЕРАТОРИ на VBA

Операндът за булев оператор може да бъде всеки валиден израз, който има булев резултат, както и число, което може да бъде преобразувано в булева стойност.

Резултатът от логическа операция е стойност от тип Boolean (или Null, ако поне един от операндите е Null).

Логически операторИ

СИНТАКСИС:

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

Операторът И изпълнява логическа връзка.

Резултатът от тази операция е True само когато и двата операнда са True, в противен случай False.

Таблица на истината

Операторът И може да се използва за множество операнди:

(5<7) AND (4>3) И (5=6) резултатът ще бъде False

Независимо от броя на операндите, резултатът от логическата операция AND ще бъде True само ако всички операнди на израза имат стойност True. Във всеки друг случай резултатът ще бъде False. Имайте предвид, че операндите са оградени в скоби. VBA първо оценява стойността на всеки операнд в скобите, а след това и целия израз.

Логически оператор ИЛИ

СИНТАКСИС:

Операнд_1 ИЛИ Операнд_2

Операторът OR го прави логическа дизюнкция.

Резултатът от тази операция е True, ако поне един от операндите е True, в противен случай False.

Таблица на истината

Операторът OR може да се използва за множество операнди:

(5<7) OR (4>3) ИЛИ (5=6) резултатът ще бъде True

Независимо от броя на операндите, резултатът от логическата операция ИЛИ винаги ще бъде True, ако поне един от операндите на израза е True. В противен случай резултатът ще бъде False.

Операторите И и ИЛИ могат да се комбинират:

((5<7) AND (4>3)) ИЛИ (5=6) резултатът ще бъде True

Логически оператор НЕ

СИНТАКСИС:

НЕ операнд

Операторът NOT го прави логическо отрицание.

Операторът NOT използва само един операнд.

Таблица на истината

Операторите И ИЛИ НЕ могат да се комбинират:

((5<7) AND (4>3)) ИЛИ НЕ (5=6) резултатът ще бъде True

Логически оператор XOR

СИНТАКСИС:

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

Операторът XOR го прави логично изключение.

Резултатът от тази операция е True, ако операндите имат различни стойности, в противен случай False.

Таблица на истината

((5<7) AND (4>3)) ИЛИ НЕ (5=6) XOR (5=5) резултатът ще бъде False

Логически оператор EQV

СИНТАКСИС:

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

Операторът EQV е операторът логическа еквивалентност.

Резултатът от тази операция е True, ако операндите имат еднакви стойности, в противен случай False.

Таблица на истината

((5<7) AND (4>3)) ИЛИ НЕ (5=6) EQV (5=5) резултатът ще бъде True.

Оператори за сравнение

Обикновено операциите за сравнение се използват в оператори за цикъл, за да се вземе някакво решение относно по-нататъшния ход на операциите.

Резултатът от всяка операция за сравнение е булева стойност: True, False.

Ако и двата операнда в израз за сравнение имат един и същи тип данни, VBA извършва просто сравнение за този тип.

Ако и двата операнда в израз за сравнение имат специфични типове и типовете не са съвместими, VBA издава грешка при несъответствие на типа.

Ако един или двата операнда в израз за сравнение са променливи от тип Variant, VBA се опитва да преобразува типа Variant в някакъв съвместим тип.

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

Операторът за присвояване се използва за присвояване на резултата от израз към променлива.

Операторът за присвояване има две синтактични форми:

1 Нека varname = израз
2 име на променлива = израз


varname- всяка променлива на VBA

изразяване- произволен VBA израз


Първата версия на оператора за присвояване се използва в ранните основни езици за програмиране. Втората опция се използва в съвременната версия на VBA.


Когато изпълнявате оператор за присвояване, VBA първо оценява израза отдясно на оператора за присвояване и след това съхранява резултата от израза в променливата, чието име е вляво от знака за равенство.


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


Начинаещите потребители понякога не разбират значението на последната операция за присвояване, когато и лявата, и дясната част на операцията съдържат една и съща променлива. В този случай резултатът от изчисляването на израза от дясната страна на оператора за присвояване първо се поставя в междинна памет и след това този резултат се присвоява на променливата от лявата страна.

Например, ако в оператора за присвояване A = A +5 променливата A преди операцията за присвояване е съдържала стойност 7, то след операцията тя ще съдържа стойност 12 (7+5).

Неща, които трябва да запомните:

  • Можете да присвоите всяка числова променлива (или израз) на всяка друга числова променлива (или вариант);
  • Ако присвоите числов израз на въведена променлива с по-малка точност (например Double - Long), VBA закръгля стойността на израза, за да съответства на точността на променливата, получаваща новата стойност;
  • Ако променлива String е присвоена на променлива Variant, която съдържа число, VBA автоматично преобразува числото в низ.

Оператор за добавяне (+)

Операторът за събиране извършва просто събиране. И двата операнда трябва да са числови изрази или низове, които VBA може да конвертира в число. Операторът за събиране може също да се използва за извършване на аритметични операции върху данни за дата.


Типът данни на резултата от израз за добавяне обикновено е същият като най-точния тип в този израз. Но има изключения:

  • Резултатът от добавянето на Single и Long е Double;
  • Добавянето на тип Дата към всеки друг тип данни винаги ще доведе до Дата;
  • Ако резултатът надхвърля диапазона от тип 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.


Нека обобщим горното.

Инструкции