Aritmetické operace ve VBA: sčítání, odčítání, násobení, dělení a umocňování. Operátory a vestavěné funkce VBA Vba zbytek mod

Operátor přiřazení (=)

Operátor přiřazení se používá k přiřazení výsledku výrazu k proměnné.

Operátor přiřazení má dvě syntaktické formy:

varname = výraz

varname- jakákoli proměnná VBA

výraz- jakýkoli výraz VBA

Když spustíte příkaz přiřazení, jazyk VBA nejprve vyhodnotí výraz napravo od příkazu přiřazení a poté uloží výsledek výrazu do proměnné, jejíž název je vlevo od znaménka rovná se.

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

Začínající uživatelé někdy nechápou význam poslední operace přiřazení, kdy levá i pravá část operace obsahují stejnou proměnnou. V tomto případě je výsledek vyhodnocení výrazu na pravé straně operátoru přiřazení nejprve umístěn do mezipaměti a poté je tento výsledek přiřazen do proměnné na levé straně.

Pokud například v operátoru přiřazení A = A +5 obsahovala proměnná A před operací přiřazení hodnotu 7, pak po operaci bude obsahovat hodnotu 12 (7+5).

Důležité informace:

· Libovolnou číselnou proměnnou (nebo výraz) můžete přiřadit jakékoli jiné číselné proměnné (nebo typu Variant);

· Pokud zadané proměnné přiřadíte číselný výraz s menší přesností (například Double - Long), VBA zaokrouhlí hodnotu výrazu tak, aby odpovídala přesnosti proměnné přijímající novou hodnotu;

· Pokud je přiřazena proměnná typu String typ proměnné Varianta obsahující číslo, VBA automaticky převede číslo na řetězec.

Operátor přidání (+)

Operátor sčítání provádí jednoduché sčítání. Oba operandy musí být číselné výrazy nebo řetězce, které VBA dokáže převést na číslo. K provedení lze také použít operátor sčítání aritmetické operace s datovým typem Datum.

Datový typ výsledku sčítacího výrazu je obvykle stejný jako nejpřesnější typ v tomto výrazu. Existují však výjimky:

· Výsledkem přidání typu Single a Long bude Double;

· Výsledkem přidání typu Datum k jakémukoli jinému datovému typu bude vždy Datum;

· Pokud výsledek překročí rozsah typu Integer, pak jej VBA převede na Long;

· Pokud výsledek překročí typy Long, Single, Date, VBA jej převede na Double;

· Pokud má jakýkoli operand ve výrazu sčítání hodnotu Null, pak bude výsledek výrazu sčítání také Null.

Připomeňme si pořadí zvyšující se přesnosti pro číselné datové typy: Byte, Integer, Long, Single, Double, Currency.

Je třeba říci, že musíte jasně pochopit, jak VBA převádí datové typy jako výsledek aritmetických operací. To v budoucnu pomůže vyhnout se mnoha „zbytečným“ chybám při psaní kódu.

Operátor odčítání (-)

Operátor odčítání dělá dvě věci: používá se k odečítání jednoho čísla od druhého; znamená unární minus (toto je znaménko minus, které je umístěno před číslem, což znamená, že se jedná o záporné číslo). Umístění unárního mínusu před proměnnou nebo výraz je stejné jako vynásobení tohoto čísla číslem -1.

Oba operandy ve výrazu odčítání musí být číselné proměnné (výrazy) nebo řetězcové výrazy, které VBA dokáže převést na číslo. Pro práci s daty můžete použít operátor odečítání.

VBA používá k určení datového typu výsledku výrazu odčítání stejná pravidla jako pro výrazy, které používají operátor sčítání. Je tu však dodatek:

· Jsou-li oba operandy ve výrazu typu Datum, pak bude výsledek výrazu typu Double.

Operátor násobení (*)

Operátor násobení násobí dvě čísla – výsledkem násobení je součin dvou operandů. Oba operandy ve výrazu násobení musí být číselné výrazy nebo řetězce, které VBA dokáže převést na číslo.

VBA se řídí stejnými pravidly pro určení datového typu výsledku výrazu násobení jako pro výrazy, které používají operátor sčítání. Ve výrazech pro násobení jsou všechny proměnné Variant, které obsahují hodnoty Date, převedeny na číselné hodnoty.

Operátor divize (/)

Operátor dělení s plovoucí desetinnou čárkou provádí běžné aritmetické dělení svých operandů.

Ve výrazech dělení se první operand dělí druhým operandem – výsledkem dělení je podíl.

Oba operandy ve výrazu dělení s plovoucí desetinnou čárkou musí být číselné výrazy nebo řetězce, které VBA dokáže převést na číslo.

Pokud je alespoň jeden operand ve výrazu dělení typu Null, pak bude výsledek dělení také Null.

Datový typ operace dělení s pohyblivou řádovou čárkou je Double, kromě:

Oba operandy ve výrazu dělení jsou typu Integer nebo Single - výsledkem je Single;

Pokud výsledek výrazu nepřeteče rozsah hodnot pro typ Single.

Celočíselné dělení (\)

Celočíselné dělení se od dělení s plovoucí desetinnou čárkou liší tím, že jeho výsledkem je vždy celé číslo bez zlomkové části.

Oba operandy ve výrazu s celočíselným dělením musí být číselné výrazy nebo řetězce, které VBA dokáže převést na číslo.

Před provedením operace dělení celých čísel VBA zaokrouhlí každý operand na číslo typu Integer nebo Long (stejný typ jako výsledek dělení celých čísel).

VBA zahodí (ale nezaokrouhlí!) jakýkoli zlomkový zbytek výsledku celočíselného dělení. Například výrazy 22\5 a 24\5 budou mít stejný výsledek = 4.

Pokud je alespoň jeden operand ve výrazu celočíselného dělení typu Null, pak bude výsledek dělení také Null.

Modulo divize (Mod)

Modulo dělení doplňuje celočíselné dělení. Při dělení modulo vrací výraz pouze zbytek operace dělení jako celé číslo.

22 Mod 5 = 2

24 Mod 5 = 4

25 Mod 5 = 0

Zbývající vlastnosti modulového dělení jsou shodné s celočíselným dělením.

Umocnění (^)

Operátor umocnění zvýší číslo na mocninu.

5 ^ 3 =125

Oba operátory ve výrazu umocňování musí být číselné výrazy nebo řetězce, které VBA dokáže převést na čísla.

Operand nalevo od operátoru umocnění může být záporné číslo pouze v případě, že operand napravo je celé číslo.

Výsledek výrazu je typu Double.

Pokud je alespoň jeden operand ve výrazu typu Null, bude výsledek umocňování také Null.

Shrňme si výše uvedené:

LOGICKÉ OPERÁTORY VBA

Operandem pro booleovský operátor může být jakýkoli platný výraz, který má logický výsledek, stejně jako číslo, které lze převést na logickou hodnotu.

Výsledkem logické operace je hodnota typu Boolean (nebo Null, pokud je alespoň jeden z operandů Null).

Logický operátor AND

SYNTAX:

Operand_1 A Operand_2

Provede se operátor AND logické spojení.

Výsledkem této operace je hodnota Pravda, pouze když jsou oba operandy True, jinak False.

Tabulka pravdy

Operátor AND lze použít pro více operandů:

(5<7) AND (4>3) AND (5=6) výsledek bude False

Bez ohledu na počet operandů bude výsledek logické operace AND True pouze v případě, že se všechny operandy výrazu vyhodnotí jako True. V každém jiném případě bude výsledek False. Všimněte si, že operandy jsou uzavřeny v závorkách. VBA nejprve vyhodnotí hodnotu každého operandu uvnitř závorek a poté celý výraz.

Logický operátor OR

SYNTAX:

Operand_1 NEBO Operand_2

Operátor OR ano logická disjunkce.

Výsledek této operace je True, pokud je alespoň jeden z operandů True, jinak False.

Tabulka pravdy

Operátor OR lze použít pro více operandů:

(5<7) OR (4>3) NEBO (5=6) výsledek bude True

Bez ohledu na počet operandů bude výsledek logické operace OR vždy True, pokud má alespoň jeden z operandů výrazu hodnotu True. V opačném případě bude výsledek False.

Operátory AND a OR lze kombinovat:

((5<7) AND (4>3)) NEBO (5=6) výsledek bude True

Logický operátor NE

SYNTAX:

NE Operand

Operátor NOT ano logická negace.

Operátor NOT používá pouze jeden operand.

Tabulka pravdy

Operátory AND OR NOT lze kombinovat:

((5<7) AND (4>3)) NEBO NE (5=6) výsledek bude True

Logický operátor XOR

SYNTAX:

Operand_1 XOR Operand_2

Operátor XOR ano logická výjimka.

Výsledek této operace je True, pokud mají operandy různé hodnoty, jinak False.

Tabulka pravdy

((5<7) AND (4>3)) NEBO NE (5=6) XOR (5=5) výsledek bude False

Logický operátor EQV

SYNTAX:

Operand_1 EQV Operand_2

Operátor EQV je provozovatel logická ekvivalence.

Výsledek této operace je True, pokud mají operandy stejné hodnoty, jinak False.

Tabulka pravdy

((5<7) AND (4>3)) NEBO NE (5=6) EQV (5=5) výsledek bude True.

Porovnávací operátory

Obvykle se srovnávací operace používají v smyčkových operátorech, aby učinily určité rozhodnutí o dalším průběhu operací.

Výsledkem jakékoli operace porovnání je logická hodnota: True, False.

Pokud mají oba operandy ve výrazu porovnání stejný datový typ, VBA provede pro tento typ jednoduché porovnání.

Pokud oba operandy ve výrazu porovnání mají specifické typy a typy nejsou kompatibilní, VBA vydá chybu nesouladu typu.

Pokud jeden nebo oba operandy ve výrazu porovnání jsou proměnné typu Variant, VBA se pokusí převést typ Variant na nějaký kompatibilní typ.

Operátory VBA: aritmetické, logické, porovnávání, přiřazování

Operátor je nejmenší jednotka kódu VBA, kterou lze spustit. Příkaz může deklarovat nebo definovat proměnnou, nastavit volbu kompilátoru VBA nebo provést nějakou akci v programu.

Ve VBA je pouze 7 aritmetických operátorů. Čtyři standardní: sčítání (+), odčítání (-), násobení (*), dělení (/) a tři další:

  • například umocňování (^). 2^3 = 8 ;
  • celočíselné dělení (\). Vydělí první číslo druhým a zahodí (bez zaokrouhlení) zlomkovou část. Například, 5\2 = 2 ;
  • dělení modulo (Mod). Vydělí první číslo druhým a vrátí pouze zbytek dělení. Například, 5 Mod 2 = 1.

Operátor přiřazení ve VBA je rovnítko. Můžete to napsat takto:

Nechť nVar = 10

nebo ještě jednodušší:

nVar = 10

V druhém případě nezaměňujte znaménko rovná se s operátorem rovná se.

Výraz

nVar = 10

znamená "nastavit nVar na 10" a pokud řádek vypadá takto:

If (nVar = 10)

pak to znamená "pokud je hodnota nVar 10".

Pokud je třeba objekt přiřadit k proměnné, provádí se to jinými způsoby.

Ve VBA je pouze 8 operátorů porovnání:

  • rovnost (=), např. If (nVar = 10);
  • větší než a menší než (> a<), например, If (nVar > 10);
  • větší nebo rovno a menší nebo rovno (>= a<=), например, If (nVar >= 10);
  • není stejný (<>), Například, If(nVar<>10) ;
  • srovnání objektů (Is). Určuje, zda objektové proměnné odkazují na stejný objekt nebo na různé, např. If(obj1 je obj2);
  • podobnost (Like). Porovná objekt řetězce se vzorem a určí, zda se vzor shoduje.

Porovnávací operátory vždy vracejí true nebo false - true, pokud je výrok pravdivý, a false, pokud je nepravdivý.

Něco málo o porovnání hodnot řetězců:

  • Při porovnávání hodnot řetězců se bere v úvahu velká a malá písmena;
  • jsou také brány v úvahu mezery v hodnotách řetězce;
  • Při porovnávání textových řetězců na větší/menší se ve výchozím nastavení porovnávají jednoduše kódy binárních znaků – což je větší nebo menší. Pokud potřebujete použít pořadí podle abecedy, můžete použít příkaz

Možnost Porovnat text

Ještě něco málo o operátoru Like. Jeho obecná syntaxe vypadá takto

Výraz1 Jako Výraz2

V tomto případě je Expression1 libovolný textový výraz VBA a Expression2 je šablona, ​​která je předána operátoru Like. V tomto vzoru můžete použít speciální zástupné znaky (viz Tabulka 3.1)

Stůl 3.1 Zástupné znaky pro operátor LIKE

Velmi často se při kontrole několika podmínek používají logické operátory:

  • AND - logické AND, obě podmínky musí být pravdivé;
  • OR - logické NEBO, alespoň jedna z podmínek musí být pravdivá;
  • NOT - logická negace, vrátí TRUE, pokud je podmínka nepravdivá;
  • XOR je logická výjimka. Ve výrazu E1 XOR vrátí E2 hodnotu TRUE, pokud pouze E1 = TRUE nebo pouze E2 = TRUE, jinak FALSE;
  • EQV - ekvivalence dvou výrazů, vrátí TRUE, pokud mají stejnou hodnotu;
  • IMP - implikace, vrátí NEPRAVDA, pokud E1 = PRAVDA a E2 = NEPRAVDA, jinak PRAVDA.

Musíte si pamatovat na AND, OR, NOT, jiné logické operátory se používají zřídka.

Téměř každý program VBA používá operátory zřetězení. Ve VBA jsou dvě - + nebo &. Doporučuje se vždy používat a protože:

  • při použití & jsou číselné hodnoty automaticky převedeny na řetězcové hodnoty - nehrozí, že byste udělali chybu;
  • Při použití operátoru + vytvoříte přidáním hodnoty řetězce k hodnotě typu Null hodnotu Null.

MsgBox "Zpráva uživateli" & vUserName

Pořadí, ve kterém se operátory používají, lze ovládat pomocí závorek.

Při psaní kódu VBA v Excelu se na každém kroku používá sada vestavěných operátorů. Tyto operátory se dělí na matematické, řetězcové, porovnávací a logické operátory. Dále se podrobně podíváme na každou skupinu operátorů.

Matematické operátory

Základní matematické operátory VBA jsou uvedeny v tabulce níže.

Pravý sloupec tabulky ukazuje výchozí prioritu operátorů bez závorek. Přidáním závorek k výrazu můžete podle potřeby změnit pořadí, ve kterém jsou příkazy VBA prováděny.

Řetězcové operátory

Operátor hlavního řetězce v aplikaci Excel VBA je operátor zřetězení & (spojit):

Porovnávací operátory

Porovnávací operátory se používají k porovnání dvou čísel nebo řetězců a vrací booleovskou hodnotu jako Boolean(Pravda nebo lež). Hlavní operátory porovnání VBA Excelu jsou uvedeny v této tabulce:

Logické operátory

Logické operátory, stejně jako operátory porovnání, vracejí booleovskou hodnotu typu Boolean(Pravda nebo lež). Základní logické operátory Excel VBA jsou uvedeny v tabulce níže:

Výše uvedená tabulka neuvádí všechny logické operátory dostupné ve VBA. Úplný seznam Booleovské operátory lze nalézt na Visual Basic Developer Center.

Vestavěné funkce

Ve VBA je k dispozici mnoho vestavěných funkcí, které lze použít při psaní kódu. Níže jsou uvedeny některé z nejčastěji používaných:

Funkce Akce
Břišní svaly Vrátí absolutní hodnotu daného čísla.
  • Abs (-20) vrátí hodnotu 20;
  • Abs (20) vrátí hodnotu 20.
Chr Vrátí znak ANSI odpovídající číselné hodnotě parametru.
  • Chr(10) vrátí konec řádku;
  • Chr(97) vrací charakter A.
datum Vrátí aktuální systémové datum.
DateAdd Přidá k danému datu konkrétní časový interval. Syntaxe funkce:

DateAdd( interval , číslo , datum )

Kde je argument interval definuje typ časového intervalu přidaného k danému datum ve výši uvedené v argumentu číslo .

Argument interval může nabývat jedné z následujících hodnot:

  • DateAdd(“d”, 32, “01/01/2015”) přidá 32 dní k datu 01.01.2015 a vrátí tak datum 02.02.2015.
  • DateAdd("ww", 36, "01/01/2015") přidá 36 týdnů k datu 01.01.2015 a vrátí datum 09.09.2015.
DateDiff Vypočítá počet zadaných časových intervalů mezi dvěma danými daty.
  • DateDiff("d", "01/01/2015", "02/02/2015") vypočítá počet dní mezi daty 01.01.2015 a 02.02.2015 a vrátí výsledek 32.
  • DateDiff("ww", "01/01/2015", "03/03/2016") vypočítá počet týdnů mezi daty 01.01.2015 a 03.03.2016 a vrátí výsledek 61.
Den Vrátí celé číslo odpovídající dni v měsíci v daném datu.

Příklad: Den („01/29/2015“) vrátí číslo 29.

Hodina Vrátí celé číslo odpovídající počtu hodin v daném čase.

Příklad: Hodina („22:45:00“) vrátí číslo 22.

InStr Vezme celé číslo a dva řetězce jako argumenty. Vrátí polohu výskytu druhého řetězce v rámci prvního, přičemž hledání začíná na pozici určené celým číslem.
  • InStr(1, “Zde je slovo, které hledáte”, “slovo”) vrátí číslo 13.
  • InStr(14, “Zde je hledané slovo a zde je další hledané slovo”, “slovo”) vrátí číslo 38.

Poznámka: Argument číslo nemusí být zadán, v takovém případě začíná hledání od prvního znaku řetězce zadaného ve druhém argumentu funkce.

Int Vrátí celočíselnou část zadaného čísla.

Příklad: Int(5,79) vrátí výsledek 5.

Isdate Návraty Skutečný pokud je daná hodnota datum, popř Nepravdivé– pokud to není datum.
  • IsDate(“01/01/2015”) se vrací Skutečný;
  • IsDate(100) se vrací Nepravdivé.
IsError Návraty Skutečný, pokud je daná hodnota chybou, popř Nepravdivé– pokud to není chyba.
Chybí Název je předán jako argument funkci volitelný argument postupy. Chybí se vrací Skutečný, pokud není předána žádná hodnota pro daný argument procedury.
IsNumeric Návraty Skutečný pokud lze danou hodnotu považovat za číslo, jinak vrací Nepravdivé.
Vlevo, odjet Vrátí zadaný počet znaků od začátku předávaného řetězce. Syntaxe funkce je tato:

Vlevo, odjet( čára , délka )

Kde čára je původní řetězec a délka– počet vrácených znaků, počítáno od začátku řádku.

  • Vlevo("abvgdezziklmn", 4) vrátí řetězec „abvg“;
  • Vlevo("abvgdezziklmn", 1) vrátí řetězec "a".
Len Vrátí počet znaků v řetězci.

Příklad: Len(“abvgdez”) vrátí číslo 7.

Měsíc Vrátí celé číslo odpovídající měsíci v daném datu.

Příklad: Měsíc („01/29/2015“) vrátí hodnotu 1.

Střední Vrátí zadaný počet znaků ze středu předávaného řetězce. Syntaxe funkce:

Střední( čára , Start , délka )

Kde čára je původní řetězec Start– poloha začátku vytaženého řádku, délka– počet znaků, které mají být extrahovány.

  • Mid(“abvgdezziklmn”, 4, 5) vrátí řetězec „kde“;
  • Mid(“abvgdezziklmn”, 10, 2) vrátí řetězec „cl“.
Minuta Vrátí celé číslo odpovídající počtu minut v daném čase. Příklad: Minuta („22:45:15“) vrátí hodnotu 45.
Nyní Vrátí aktuální systémové datum a čas.
Že jo Vrátí zadaný počet znaků od konce předaného řetězce. Syntaxe funkce:

Že jo( čára , délka )

Kde čára je původní řetězec a délka– počet znaků, které je třeba extrahovat, počítáno od konce daného řetězce.

  • Right(“abvgdezziklmn”, 4) vrátí řetězec „clmn“;
  • Right(“abvgdezziklmn”, 1) vrátí řetězec "n".
Druhý Vrátí celé číslo odpovídající počtu sekund v daném čase.

Příklad: Druhý („22:45:15“) vrátí hodnotu 15.

Sqr Vrátí druhou odmocninu z číselné hodnoty předané jako argument.
  • Sqr(4) vrátí hodnotu 2;
  • Sqr(16) vrátí hodnotu 4.
Čas Vrátí aktuální systémový čas.
Ubound Vrátí horní index dimenze zadaného pole.

Poznámka: U vícerozměrných polí může volitelný argument určit index, který rozměr má být vrácen. Pokud není zadáno, výchozí hodnota je 1.

Podívejme se blíže na to, jak VBA provádí aritmetické operace, jako je sčítání, odčítání, násobení, dělení a umocňování, a také speciální operace, jako je celočíselné dělení a dělení modulo. Níže uvedená tabulka ukazuje operační znaky používané při psaní aritmetických výrazů VBA.

Výraz je hodnota nebo skupina hodnot vyjadřující jednu hodnotu. Výsledkem výrazu je jedna hodnota určitý typ data. Znaky (označení) operací se používají pro akce na určité hodnoty ve výrazech. Chcete-li přiřadit výsledek výrazu k proměnné, použijte operátor přiřazení (=), který ukládá jakoukoli hodnotu reprezentovanou výrazem napravo od operátoru přiřazení v paměťovém místě, na které odkazuje proměnná nalevo od tohoto operátoru.

Ve všech níže uvedených operacích musí být oba operandy číselné výrazy nebo řetězce, které VBA dokáže převést na číslo.

Přidání

Znaménko (+) se používá k provedení operace sčítání. Termíny musí být číselné výrazy, řetězce, které VBA dokáže převést na čísla, nebo data, která lze také použít pro aritmetiku.

Sub Slozhenie() "Příklad aritmetického výrazu se znaménkem "+" Dim A1, A2, A3 As Integer "deklarování proměnných A1=1 "přiřazení hodnoty 1 proměnné A1 A2=2 "přiřazení hodnoty 2 proměnné A2 A3=A1 +A2 "přiřazení výsledku přidání proměnné A3 MsgBox A3 "výstup A3 v dialogovém okně End Sub

Datový typ výsledku sčítacího výrazu je obvykle až na několik výjimek stejný jako nejpřesnější typ v daném výrazu. Všechny výjimky z tohoto pravidla jsou jasně uvedeny v příkladech.

Odčítání

Znaménko (-) se používá k provedení operace odčítání a také k označení záporných čísel (pokud je umístěno před proměnnou nebo výraz a znamená totéž jako násobení -1). Znaménko minus umístěné před číslem, které označuje, že číslo je záporné, se nazývá unární znaménko minus.

K určení datového typu výsledku výrazu odčítání se jazyk VBA řídí stejnými pravidly jako pro výrazy, které používají operátor sčítání, ale existují dvě další pravidla.

Pravidlo 1. Pokud je v odčítacím výrazu jeden z operandů typu Datum, pak bude výsledek výrazu typu Datum.

Pravidlo 2: Pokud jsou oba operandy v odečítacím výrazu typu Datum, pak bude výsledek výrazu typu Double.

Sub Vychitanie() "Příklad aritmetického výrazu se znaménkem "-" Dim D1, D2 As Date "deklarování proměnných D1=Nyní "přiřazení hodnoty dnešní datum proměnná D1 D2=Now-5 "přiřazení hodnoty data proměnné D2 MsgBox TypeName(D2), vbOKOnly, "Now-5" MsgBox TypeName(D1-D2), vbOKOnly, "D1-D2" End Sub

Násobení

Znak (*) se používá k provedení operace násobení, výsledek této operace je součinem operandů. K určení datového typu výsledku výrazu násobení používá jazyk VBA stejná pravidla jako pro výrazy, které používají sčítání. Ve výrazech násobení jsou všechny proměnné Variant obsahující hodnoty Date převedeny na číselné hodnoty.

"Příklad aritmetických výrazů se znaménkem "*" 4*10 "násobení 4 10 MyVar*2 "násobení MyVar 2 MyVar*OtherVar "násobení MyVar pomocí OtherVar

Divize

Znaménko (/) se používá k provedení operace dělení, toto znaménko se nazývá dělení pro reálná čísla. Ve výrazech dělení se jeden operand dělí druhým a výsledkem dělení je podíl.

"Příklad aritmetických výrazů se znaménkem "/" 10/4 "dělení 10 4 MyVar/2 "dělení MyVar 2 MyVar/OtherVar "dělení MyVar podle OtherVar

Pokud je jakýkoli operand ve výrazu dělení Null, pak je výsledek výrazu také Null. Datový typ ve výrazech dělení reálných čísel je obvykle Double, ale existuje výjimka.

Pokud jsou ve výrazu dělení oba operandy typu Integer nebo Single, pak je výsledek výrazu dělení typu Single. Pokud výsledek překročí rozsah pro typ Single, VBA jej převede na typ Double.

Celočíselné dělení

Znaménko (\) se používá k provedení operace dělení celého čísla, ve které je výsledkem dělení vždy celé číslo bez zlomkové části. VBA nezaokrouhluje podíl celočíselného dělení, ale jednoduše jej zkrátí na celé číslo, přičemž zlomkovou část zahodí.

Datový typ výsledku celočíselného dělení je buď Integer nebo Long. VBA používá nejmenší datový typ, který odpovídá výsledku výrazu.

"Příklad aritmetických výrazů se znaménkem "\" 10\4 "dělením 10 4; vrátí 2 MyVar\2 "dělení MyVar by 2 MyVar\OtherVar" dělící MyVar by OtherVar

Modulová divize

Znak (Mod) se používá k dělení modulo. Při dělení modulo vrací výraz pouze zbytek dělení jako celé číslo.

"Příklad aritmetických výrazů se znaménkem "Mod" 8 Mod 2 "vrací 0; 5.1 Mod 3 "vrací 2; 6 Mod MyVar "pokud MyVar obsahuje 3, vrací 0

Je uvedeno snadno srozumitelné vysvětlení této matematické operace na jednom z programátorských fór. Odtud budu citovat: „Představte si, že existuje plný kanystr o objemu 50 litrů a sklenice o objemu 3 litrů. A vy začnete nabírat vodu z kanystru pomocí sklenice (můžete pouze nakreslit plná sklenice). Vyhrabal jsem 48 litrů, zbyly 2 litry. Toto je modulo 50 děleno 3." Jinými slovy, 50 Mod 3 vrátí 2.

Datový typ výsledku výrazu dělení modulo je Integer nebo Long. VBA používá nejmenší typ, který je vhodný pro výsledek výrazu.

Umocňování

Znaménko (^) se používá k provedení operace umocňování čísla nebo výrazu. Exponent ukazuje, kolikrát musí být číslo nebo výraz vynásoben sám sebou.

"Příklad aritmetického výrazu se znaménkem "^" 3 ^ 3 "je stejný jako 3*3*3, vrátí hodnotu 27


Operátor přiřazení (=)

Operátor přiřazení se používá k přiřazení výsledku výrazu k proměnné.

Operátor přiřazení má dvě syntaktické formy:

1 Nechť varname = výraz
2 varname = výraz


varname- jakákoli proměnná VBA

výraz- jakýkoli výraz VBA


První verze operátoru přiřazení byla používána v raných jazycích Základní programování. Druhá možnost se používá v moderní verzi VBA.


Když spustíte příkaz přiřazení, jazyk VBA nejprve vyhodnotí výraz napravo od příkazu přiřazení a poté uloží výsledek výrazu do proměnné, jejíž název je vlevo od znaménka rovná se.


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


Začínající uživatelé někdy nechápou význam poslední operace přiřazení, kdy levá i pravá část operace obsahují stejnou proměnnou. V tomto případě je výsledek vyhodnocení výrazu na pravé straně operátoru přiřazení nejprve umístěn do mezipaměti a poté je tento výsledek přiřazen do proměnné na levé straně.

Pokud například v operátoru přiřazení A = A +5 obsahovala proměnná A před operací přiřazení hodnotu 7, pak po operaci bude obsahovat hodnotu 12 (7+5).

Důležité informace:

  • Libovolnou číselnou proměnnou (nebo výraz) můžete přiřadit jakékoli jiné číselné proměnné (nebo Variantě);
  • Pokud zadané proměnné přiřadíte číselný výraz s menší přesností (například Double - Long), VBA zaokrouhlí hodnotu výrazu tak, aby odpovídala přesnosti proměnné, která novou hodnotu přijímá;
  • Pokud je proměnná String přiřazena k proměnné Variant, která obsahuje číslo, jazyk VBA toto číslo automaticky převede na řetězec.

Operátor přidání (+)

Operátor sčítání provádí jednoduché sčítání. Oba operandy musí být číselné výrazy nebo řetězce, které VBA dokáže převést na číslo. Operátor sčítání lze také použít k provádění aritmetických operací s daty Date.


Datový typ výsledku sčítacího výrazu je obvykle stejný jako nejpřesnější typ v tomto výrazu. Existují však výjimky:

  • Výsledkem přidání Single a Long je Double;
  • Přidání typu Datum k jakémukoli jinému datovému typu bude mít vždy za následek Datum;
  • Pokud výsledek překročí rozsah typu Integer, pak jej VBA převede na Long;
  • Pokud výsledek překročí typy Long, Single, Date, pak jej VBA převede na Double;
  • Pokud má jakýkoli operand ve výrazu sčítání hodnotu Null, bude výsledkem výrazu sčítání také hodnota Null.

Připomeňme si pořadí zvyšující se přesnosti pro číselné datové typy: Byte, Integer, Long, Single, Double, Currency.

Je třeba říci, že musíte jasně pochopit, jak VBA převádí datové typy jako výsledek aritmetických operací. To v budoucnu pomůže vyhnout se mnoha „zbytečným“ chybám při psaní kódu.

Operátor odčítání (-)

Operátor odčítání dělá dvě věci: používá se k odečítání jednoho čísla od druhého; znamená unární minus (toto je znaménko minus, které je umístěno před číslem, což znamená, že se jedná o záporné číslo). Umístění unárního mínusu před proměnnou nebo výraz je stejné jako vynásobení tohoto čísla číslem -1.


Oba operandy ve výrazu odčítání musí být číselné proměnné (výrazy) nebo řetězcové výrazy, které VBA dokáže převést na číslo. Pro práci s daty můžete použít operátor odečítání.

VBA používá k určení datového typu výsledku výrazu odčítání stejná pravidla jako pro výrazy, které používají operátor sčítání. Je tu však dodatek:
Pokud jsou oba operandy ve výrazu typu Datum, pak bude výsledek výrazu typu Double.

Operátor násobení (*)

Operátor násobení násobí dvě čísla – výsledkem násobení je součin dvou operandů. Oba operandy ve výrazu násobení musí být číselné výrazy nebo řetězce, které VBA dokáže převést na číslo.

VBA se řídí stejnými pravidly pro určení datového typu výsledku výrazu násobení jako pro výrazy, které používají operátor sčítání. Ve výrazech pro násobení jsou všechny proměnné Variant, které obsahují hodnoty Date, převedeny na číselné hodnoty.

Operátor divize (/)

Operátor dělení s plovoucí desetinnou čárkou provádí běžné aritmetické dělení svých operandů.

Ve výrazech dělení se první operand dělí druhým operandem – výsledkem dělení je podíl.

Oba operandy ve výrazu dělení s plovoucí desetinnou čárkou musí být číselné výrazy nebo řetězce, které VBA dokáže převést na číslo.

Pokud je alespoň jeden operand ve výrazu dělení typu Null, pak bude výsledek dělení také Null.

Datový typ operace dělení s pohyblivou řádovou čárkou je Double, kromě:

  • Oba operandy ve výrazu dělení jsou typu Integer nebo Single - výsledkem je Single;
  • Pokud výsledek výrazu nepřeteče rozsah hodnot pro typ Single.

Celočíselné dělení (\)

Celočíselné dělení se od dělení s plovoucí desetinnou čárkou liší tím, že jeho výsledkem je vždy celé číslo bez zlomkové části.

Oba operandy ve výrazu s celočíselným dělením musí být číselné výrazy nebo řetězce, které VBA dokáže převést na číslo.

Před provedením operace dělení celých čísel VBA zaokrouhlí každý operand na číslo typu Integer nebo Long (stejný typ jako výsledek dělení celých čísel).

VBA zahodí (ale nezaokrouhlí!) jakýkoli zlomkový zbytek výsledku celočíselného dělení. Například výrazy 22\5 a 24\5 budou mít stejný výsledek = 4.

Pokud je alespoň jeden operand ve výrazu celočíselného dělení typu Null, pak bude výsledek dělení také Null.

Modulo divize (Mod)

Modulo dělení doplňuje celočíselné dělení. Při dělení modulo vrací výraz pouze zbytek operace dělení jako celé číslo.
22 Mod 5 = 2
24 Mod 5 = 4
25 Mod 5 = 0

Zbývající vlastnosti modulového dělení jsou shodné s celočíselným dělením.

Umocnění (^)

Operátor umocnění zvýší číslo na mocninu.



Oba operátory ve výrazu umocňování musí být číselné výrazy nebo řetězce, které VBA dokáže převést na čísla.

Operand nalevo od operátoru umocnění může být záporné číslo pouze v případě, že operand napravo je celé číslo.

Výsledek výrazu je typu Double.

Pokud je alespoň jeden operand ve výrazu typu Null, bude výsledek umocňování také Null.


Shrňme si výše uvedené.