Pri písaní kódu VBA v Exceli sa na každom kroku používa sada vstavaných operátorov. Tieto operátory sa delia na matematické, reťazcové, porovnávacie a logické operátory. Ďalej sa podrobne pozrieme na každú skupinu operátorov.
Matematické operátory
Hlavné matematické operátory VBA sú uvedené v tabuľke nižšie.
Pravý stĺpec tabuľky zobrazuje predvolenú prioritu operátorov bez zátvoriek. Pridaním zátvoriek do výrazu môžete podľa potreby zmeniť poradie, v ktorom sa príkazy VBA vykonávajú.
Operátory reťazcov
Základným operátorom reťazca v Excel VBA je operátor zreťazenia & (zlúčiť):
Porovnávacie operátory
Porovnávacie operátory sa používajú na porovnanie dvoch čísel alebo reťazcov a návrat boolovská hodnota typu Boolean(Pravda alebo lož). Hlavné porovnávacie operátory Excel VBA sú uvedené v tejto tabuľke:
Logické operátory
Logické operátory, podobne ako porovnávacie operátory, vracajú boolovskú hodnotu typu Boolean(Pravda alebo lož). Hlavné logické operátory Excel VBA sú uvedené v tabuľke nižšie:
V tabuľke vyššie nie sú uvedené všetky logické operátory dostupné vo VBA. Úplný zoznam logické operátory nájdete na stránke Visual Basic Developer Center.
Vstavané funkcie
Vo VBA je k dispozícii veľa vstavaných funkcií, ktoré možno použiť pri písaní kódu. Nižšie sú uvedené niektoré z najčastejšie používaných:
Funkcia | Akcia |
---|---|
abs | Vráti absolútnu hodnotu daného čísla.
|
Chr | Vráti znak ANSI zodpovedajúci číselnej hodnote parametra.
|
Dátum | Vráti aktuálny systémový dátum. |
DateAdd | K danému dátumu pridá zadaný časový interval. Syntax funkcie: DateAdd( interval , číslo , dátum ) Kde je argument interval určuje typ časového intervalu pridaného k danému dátum vo výške uvedenej v argumentácii číslo . Argumentovať interval môže nadobudnúť jednu z nasledujúcich hodnôt:
|
DateDiff | Vypočíta počet zadaných časových intervalov medzi dvoma danými dátumami.
|
deň | Vráti celé číslo zodpovedajúce dňu v mesiaci v danom dátume. Príklad: deň („29/01/2015“) vráti číslo 29. |
hodina | Vráti celé číslo zodpovedajúce počtu hodín v danom čase. Príklad: Hodina („22:45:00“) vráti číslo 22. |
InStr | Ako argumenty berie celé číslo a dva reťazce. Vráti polohu výskytu druhého reťazca v rámci prvého, pričom vyhľadávanie začne na pozícii zadanej celým číslom.
Poznámka: Argument číslo nemusí byť zadaný, v takom prípade vyhľadávanie začína od prvého znaku reťazca uvedeného v druhom argumente funkcie. |
int | Vráti celú časť daného čísla. Príklad: Int (5,79) vráti výsledok 5. |
Isdate | sa vracia Pravda ak je daná hodnota dátum, príp Nepravdivé– ak dátum nie je.
|
IsError | sa vracia Pravda ak je daná hodnota chybou, príp Nepravdivé– ak to nie je chyba. |
Chýba | Názov voliteľného argumentu procedúry sa odovzdá ako argument funkcii. Chýba sa vracia Pravda ak nebola odovzdaná žiadna hodnota pre daný argument postupu. |
IsNumeric | sa vracia Pravda ak možno danú hodnotu považovať za číslo, inak vráti Nepravdivé. |
Vľavo | Vráti zadaný počet znakov od začiatku daného reťazca. Syntax funkcie je takáto: Vľavo( riadok , dĺžka ) kde riadok- toto je originálny reťazec, a dĺžka je počet znakov, ktoré sa majú vrátiť, počítané od začiatku reťazca.
|
Len | Vráti počet znakov v reťazci. Príklad: Len("abcdej") vráti číslo 7. |
mesiac | Vráti celé číslo zodpovedajúce mesiacu daného dátumu. Príklad: Mesiac („29/01/2015“) vráti hodnotu 1. |
Stred | Vráti zadaný počet znakov zo stredu daného reťazca. Syntax funkcie: Stred( riadok , Štart , dĺžka ) kde riadok je pôvodný reťazec Štart- polohu začiatku reťazca, ktorý sa má extrahovať, dĺžka je počet znakov, ktoré sa majú extrahovať.
|
Minúta | Vráti celé číslo zodpovedajúce počtu minút v danom čase. Príklad: Minúta("22:45:15") vráti hodnotu 45. |
Teraz | Vráti aktuálny systémový dátum a čas. |
Správny | Vráti zadaný počet znakov od konca daného reťazca. Syntax funkcie: Správny( riadok , dĺžka ) Kde riadok je pôvodný reťazec a dĺžka je počet znakov na extrahovanie, počítaný od konca daného reťazca.
|
Po druhé | Vráti celé číslo zodpovedajúce počtu sekúnd v danom čase. Príklad: Druhý („22:45:15“) vráti hodnotu 15. |
sqr | Vráti druhú odmocninu z číselnej hodnoty odovzdanej v argumente.
|
Čas | Vráti aktuálny systémový čas. |
Ubound | Vráti horný index zadanej dimenzie poľa. Poznámka: Pre viacrozmerné polia ako voliteľný argument môžete určiť, ktorý index dimenzie sa má vrátiť. Ak nie je zadaný, predvolená hodnota je 1. |
Operátor priradenia (=)
Operátor priradenia sa používa na priradenie výsledku výrazu k premennej.
Operátor priradenia má dve syntaktické formy:
varname = výraz
varname- ľubovoľná premenná VBA
výraz- akýkoľvek výraz VBA
Pri vykonávaní príkazu priradenia VBA najskôr vyhodnotí výraz napravo od príkazu priradenia a potom uloží výsledok výrazu do premennej, ktorej názov je naľavo od znamienka rovnosti.
X = 5 + 7; Y = X + 5; Z = X - Y; A=B; ja = ja + 1
Začínajúci používatelia niekedy nechápu význam poslednej operácie priradenia, keď ľavá aj pravá časť operácie obsahuje rovnakú premennú. V tomto prípade sa najprv výsledok vyhodnotenia výrazu na pravej strane priraďovacieho operátora umiestni do medzipamäťovej bunky a následne sa tento výsledok priradí k premennej na ľavej strane.
Napríklad, ak v príkaze priradenia A = A +5 obsahovala premenná A pred operáciou priradenia hodnotu 7, potom po operácii bude obsahovať hodnotu 12 (7+5).
Malo by sa pamätať:
· Ľubovoľnú číselnú premennú (alebo výraz) môžete priradiť akejkoľvek inej premennej číselného typu (alebo premennej typu Variant);
· Ak zadanej premennej priradíte číselný výraz s nižšou presnosťou (napríklad Double - Long), VBA zaokrúhli hodnotu výrazu tak, aby zodpovedala presnosti premennej, ktorá má novú hodnotu;
Ak premenná typu String pridelených typ premennej Variant obsahujúci číslo, VBA automaticky prevedie toto číslo na reťazec.
Operátor sčítania (+)
Operátor sčítania vykoná jednoduché sčítanie. Oba operandy musia byť číselné výrazy alebo reťazce, ktoré VBA dokáže previesť na číslo. Operátor sčítania možno použiť aj na vykonávanie aritmetických operácií s údajmi dátumu.
Typ údajov výsledku sčítacieho výrazu je zvyčajne rovnaký ako najpresnejší typ v tomto výraze. Existujú však výnimky:
· Výsledkom pridania typu Single a Long bude Double;
· Výsledkom pridania typu Dátum k akémukoľvek inému typu údajov bude vždy Dátum;
· Ak výsledok presiahne rozsah typu Integer, VBA ho skonvertuje na Long;
· Ak výsledok presahuje typy Long, Single, Date, potom ho VBA skonvertuje na Double;
· Ak má ktorýkoľvek operand v sčítacom výraze hodnotu Null, potom je výsledok sčítacieho výrazu tiež Null.
Pripomeňte si poradie zvyšovania presnosti pre číselné typy údajov: Byte, Celé číslo, Dlhé, Jednoduché, Dvojité, Mena.
Malo by sa povedať, že je potrebné jasne pochopiť, ako VBA konvertuje typy údajov v dôsledku aritmetických operácií. V budúcnosti to pomôže vyhnúť sa mnohým „zbytočným“ chybám pri písaní kódu.
Operátor odčítania (-)
Operátor odčítania robí dve veci: používa sa na odčítanie jedného čísla od druhého; označuje jednočlenné znamienko mínus (toto je znamienko mínus, ktoré je umiestnené pred číslom, čím označuje, že ide o záporné číslo). Vloženie unárneho mínusu pred premennú alebo výraz je rovnaké ako vynásobenie tohto čísla číslom -1.
Oba operandy vo výraze odčítania musia byť číselné premenné (výrazy) alebo reťazcové výrazy, ktoré VBA dokáže previesť na číslo. Na prácu s dátumami môžete použiť operátor odčítania.
VBA používa rovnaké pravidlá na určenie typu údajov výsledku výrazu odčítania ako pre výrazy, ktoré používajú operátor sčítania. Je tu však dodatok:
· Ak sú obidva operandy vo výraze typu Date, výsledok výrazu bude typu Double.
Operátor násobenia (*)
Operátor násobenia násobí dve čísla – výsledkom násobenia je súčin dvoch operandov. Oba operandy vo výraze násobenia musia byť číselné výrazy alebo reťazce, ktoré VBA dokáže previesť na číslo.
VBA sa riadi rovnakými pravidlami na určenie typu údajov výsledku výrazu násobenia ako pre výrazy, ktoré používajú operátor sčítania. Vo výrazoch násobenia sa všetky premenné Variant, ktoré obsahujú hodnoty dátumu, skonvertujú na číselné hodnoty.
Operátor divízie (/)
Operátor delenia s pohyblivou rádovou čiarkou vykonáva obvyklé aritmetické delenie svojich operandov.
Vo výrazoch delenia sa prvý operand delí druhým operandom - výsledkom delenia je kvocient.
Oba operandy vo výraze delenia s pohyblivou rádovou čiarkou musia byť číselné výrazy alebo reťazce, ktoré VBA dokáže skonvertovať na číslo.
Ak je aspoň jeden operand vo výraze delenia typu Null, potom výsledok delenia bude tiež Null.
Typ údajov operácie delenia s pohyblivou rádovou čiarkou je Double, okrem:
Oba operandy vo výraze delenia sú typu Integer alebo Single - výsledok Single;
Ak výsledok výrazu nepresahuje rozsah hodnôt pre typ Single.
Celočíselné delenie (\)
Delenie celým číslom sa líši od delenia s pohyblivou rádovou čiarkou tým, že jeho výsledkom je vždy celé číslo bez zlomkovej časti.
Oba operandy vo výraze celočíselného delenia musia byť číselné výrazy alebo reťazce, ktoré VBA dokáže skonvertovať na číslo.
Pred vykonaním operácie delenia celého čísla VBA zaokrúhli každý operand na číslo typu Integer alebo Long (rovnaký typ ako výsledok celočíselného delenia).
VBA zahodí (ale nezaokrúhli!) akýkoľvek zlomkový zvyšok výsledku celočíselného delenia. Napríklad výrazy 22\5 a 24\5 budú mať rovnaký výsledok = 4.
Ak je aspoň jeden operand vo výraze celočíselného delenia typu Null, potom je výsledok delenia tiež Null.
Modulo Division (Mod)
Modulo delenie, ako to bolo, dopĺňa celočíselné delenie. Pri delení modulo výraz vráti iba zvyšok operácie delenia ako celé číslo.
22 Mod 5 = 2
24 Mod 5 = 4
25 Mod 5 = 0
Zvyšné vlastnosti delenia modulo sú totožné s celočíselným delením.
Umocnenie (^)
Operátor umocnenia zvýši číslo na mocninu.
5 ^ 3 =125
Oba operátory vo výraze umocňovania musia byť číselné výrazy alebo reťazce, ktoré VBA dokáže previesť na čísla.
Operand naľavo od operátora umocňovania môže byť záporné číslo iba vtedy, ak je operand napravo celé číslo.
Výsledok výrazu je typu Double.
Ak je aspoň jeden operand vo výraze typu Null, potom výsledok umocnenia bude tiež Null.
Zhrňme si vyššie uvedené:
LOGICKÉ OPERÁTORY VBA
Ako operand pre logický operátor môžete použiť ľubovoľný platný výraz, ktorý má boolovský výsledok, ako aj číslo, ktoré možno skonvertovať na boolovskú hodnotu.
Výsledkom logickej operácie je hodnota typu Boolean (alebo Null, ak je aspoň jeden z operandov Null).
Logický operátor AND
SYNTAX:
Operand_1 A Operand_2
Operátor AND vykonáva logické spojenie.
Výsledok tejto operácie je True iba vtedy, keď sú oba operandy True, inak False.
pravdivostná tabuľka
Operátor AND možno použiť na viacerých operandoch:
(5<7) AND (4>3) A (5=6) výsledok bude False
Bez ohľadu na počet operandov je výsledkom log A operácie bude True iba vtedy, ak sa všetky operandy výrazu vyhodnotia ako True. V každom inom prípade bude výsledok nepravdivý. Všimnite si, že operandy sú uzavreté v zátvorkách. VBA najprv vyhodnotí hodnotu každého operandu v zátvorkách a potom celý výraz.
Logický operátor OR
SYNTAX:
Operand_1 ALEBO Operand_2
Vykonáva operátor OR logická disjunkcia.
Výsledok tejto operácie je True, ak je aspoň jeden z operandov True, inak False.
pravdivostná tabuľka
Operátor OR možno použiť na viacerých operandoch:
(5<7) OR (4>3) ALEBO (5=6) výsledok bude True
Bez ohľadu na počet operandov bude výsledok operácie logického OR vždy True, ak sa aspoň jeden z operandov výrazu vyhodnotí ako True. V opačnom prípade bude výsledok nepravdivý.
Operátory AND a OR je možné kombinovať:
((5<7) AND (4>3)) ALEBO (5=6) výsledok bude True
Booleovský operátor NOT
SYNTAX:
NIE Operand
NIE Operátor vystupuje logická negácia.
Operátor NOT používa iba jeden operand.
pravdivostná tabuľka
Operátory AND OR NOT možno kombinovať:
((5<7) AND (4>3)) ALEBO NIE (5=6) výsledok bude True
Logický operátor XOR
SYNTAX:
Operand_1 XOR Operand_2
Vykonáva sa operátor XOR logická výnimka.
Výsledok tejto operácie je True, ak majú operandy rôzne významy, inak - Nepravda.
pravdivostná tabuľka
((5<7) AND (4>3)) ALEBO NIE (5=6) Výsledok XOR (5=5) je Nepravda
Logický operátor EQV
SYNTAX:
Operand_1 EQV Operand_2
Operátor EQV je prevádzkovateľ logická ekvivalencia.
Výsledok tejto operácie je True, ak majú operandy rovnakú hodnotu, inak False.
pravdivostná tabuľka
((5<7) AND (4>3)) ALEBO NIE (5=6) EQV (5=5) bude mať za následok hodnotu True.
Porovnávacie operátory
Zvyčajne sa porovnávacie operácie používajú v cyklických príkazoch na prijatie určitého rozhodnutia o ďalšom priebehu operácií.
Výsledkom akejkoľvek porovnávacej operácie je boolovská hodnota: True, False.
Ak sú oba operandy v porovnávacom výraze rovnakého typu údajov, VBA vykoná jednoduché porovnanie tohto typu.
Ak oba operandy v porovnávacom výraze majú špecifické typy a tieto typy nie sú kompatibilné, VBA vydá chybu nesúladu typu.
Ak jeden alebo oba operandy v porovnávacom výraze sú premenné typu Variant, VBA sa pokúsi skonvertovať typ Variant na nejaký kompatibilný typ.
Operátory VBA: Aritmetika, Boolean, Porovnania, Priradenia
Operátor je najmenšia jednotka kódu VBA, ktorá sa môže spustiť. Príkaz môže deklarovať alebo definovať premennú, nastaviť voľbu kompilátora VBA alebo vykonať nejakú akciu v programe.
Vo VBA je iba 7 aritmetických operátorov. Štyri štandardné: sčítanie (+), odčítanie (-), násobenie (*), delenie (/) a tri ďalšie:
- napríklad umocňovanie (^). 2^3 = 8 ;
- celočíselné delenie (\). Vydelí prvé číslo druhým, zahodí (nie zaokrúhľuje) zlomková časť. Napríklad, 5\2 = 2 ;
- modulo delenie (Mod). Vydelí prvé číslo druhým a vráti iba zvyšok delenia. Napríklad, 5 Mod 2 = 1.
Operátor priradenia vo VBA je znamienko rovnosti. Dá sa to napísať takto:
Nech nVar = 10
alebo ešte jednoduchšie:
nvar = 10
V druhom prípade si nezamieňajte znamienko rovnosti s operátorom rovná sa.
Výraz
nvar = 10
znamená "nastaviť premennú nVar na 10" a ak riadok vyzerá takto:
Ak (nVar = 10)
znamená to "ak je hodnota premennej nVar rovná 10".
Ak potrebujete priradiť objekt k premennej, potom sa to robí inými spôsobmi.
Vo VBA je iba 8 porovnávacích operátorov:
- rovnosť (=), napr. Ak (nVar = 10);
- väčšie ako a menšie ako (> a<), например, Ak (nVar > 10);
- väčšie alebo rovné a menšie alebo rovné (>= a<=), например, Ak (nVar >= 10);
- nerovná sa (<>), napríklad, If(nVar<>10) ;
- porovnávanie objektov (Is). Určuje, či objektové premenné odkazujú na rovnaký objekt alebo na iné, napr. If(obj1 je obj2);
- podobnosť (Páči sa mi). Porovná objekt reťazca so vzorom a určí, či sa vzor zhoduje.
Operátory porovnávania vždy vrátia hodnotu true alebo false - true, ak je tvrdenie pravdivé, a nepravdu, ak je nepravdivé.
Trochu o porovnaní hodnôt reťazcov:
- pri porovnávaní hodnôt reťazcov sa rozlišujú malé a veľké písmená;
- zohľadňujú sa aj medzery v hodnotách reťazca;
- pri porovnávaní textové reťazceštandardne viac/menej sa porovnávajú jednoducho binárne kódy znaky - čo viac či menej. Ak potrebujete použiť poradie v abecede, môžete použiť príkaz
Možnosť Porovnať text
Trochu viac o operátorovi Like. Jeho všeobecná syntax vyzerá takto
Výraz1 Ako Výraz2
V tomto prípade je Expression1 ľubovoľný textový výraz VBA a Expression2 je šablóna, ktorá sa odovzdá operátoru Like. V tomto vzore môžete použiť špeciálne zástupné znaky (pozri tabuľku 3.1)
Tab. 3.1 Zástupné znaky pre operátora LIKE
Veľmi často sa pri testovaní niekoľkých podmienok používajú logické operátory:
- AND - logické AND, obe podmienky musia byť pravdivé;
- OR - logické ALEBO, aspoň jedna z podmienok musí byť pravdivá;
- NOT - logická negácia, vráti TRUE, ak je podmienka nepravdivá;
- XOR je logická výnimka. Vo výraze E1 XOR vráti E2 hodnotu TRUE, ak iba E1 = TRUE alebo iba E2 = TRUE, inak FALSE;
- EQV - ekvivalencia dvoch výrazov, vráti TRUE, ak majú rovnakú hodnotu;
- IMP - implikácia, vráti FALSE, ak E1 = TRUE a E2 = FALSE, inak TRUE.
Musíte si zapamätať AND, OR, NOT, iné logické operátory sa používajú zriedka.
Takmer každý program VBA používa operátory zreťazenia. Vo VBA sú dve - + alebo &. Odporúča sa vždy používať a pretože:
- pri použití & sa vykoná automatická konverzia číselných hodnôtna reťazce - nehrozí nebezpečenstvo omylu;
- pri použití operátora + pridanie hodnoty reťazca k hodnote typu Null dáva hodnotu Null.
MsgBox "Správa používateľovi" & vUserName
Poradie, v ktorom sú operátory aplikované, je možné ovládať pomocou zátvoriek.
Pozrime sa bližšie na to, ako VBA vykonáva aritmetické operácie, ako je sčítanie, odčítanie, násobenie, delenie a umocňovanie, ako aj špeciálne operácie, ako je celočíselné delenie a modulo. V tabuľke nižšie sú uvedené operačné znaky používané pri písaní aritmetických výrazov VBA.
Výraz je hodnota alebo skupina hodnôt, ktorá vyjadruje jednu hodnotu. Výsledkom výrazu je jedna hodnota určitého typu údajov. Znaky (označenia) operácií sa používajú na ovládanie určitých hodnôt vo výrazoch. Na priradenie výsledku výrazu k premennej sa používa operátor priradenia (=), ktorý ukladá akúkoľvek hodnotu reprezentovanú výrazom napravo od operátora priradenia v pamäťovom mieste, na ktoré odkazuje premenná naľavo od tohto operátora.
Vo všetkých nižšie uvedených operáciách musia byť oba operandy číselné výrazy alebo reťazce, ktoré VBA dokáže skonvertovať na číslo.
Doplnenie
Znamienko (+) sa používa na vykonanie operácie sčítania. Termíny musia byť číselné výrazy, reťazce, ktoré VBA dokáže previesť na čísla, alebo dátumy, ktoré možno použiť aj na aritmetiku.
Sub Slozhenie() "Príklad aritmetického výrazu so znamienkom "+" Dim A1, A2, A3 As Integer "deklarovanie premenných A1=1 "priradenie hodnoty 1 premennej A1 A2=2 "pridelenie hodnoty 2 premennej A2 A3=A1+A2 "priradenie výsledku pridať premennú A3 MsgBox A3 "Výstup A3 v dialógovom okne End Sub
Dátový typ výsledku sčítacieho výrazu je zvyčajne rovnaký ako najpresnejší typ v tomto výraze, s niekoľkými výnimkami. Všetky výnimky z tohto pravidla sú jasne uvedené v príkladoch.
Odčítanie
Znamienko (-) sa používa na vykonanie operácie odčítania, ako aj na označenie záporných čísel (ak je umiestnené pred premennou alebo výrazom a znamená to isté ako násobenie -1). Znamienko mínus, ktoré je umiestnené pred číslom na označenie záporného čísla, sa nazýva unárne znamienko mínus.
Na určenie typu údajov výsledku výrazu odčítania sa VBA riadi rovnakými pravidlami ako pre výrazy, ktoré používajú znamienko operátora sčítania, existujú však dve ďalšie pravidlá.
Pravidlo 1. Ak je jeden z operandov vo výraze odčítania typu Dátum, potom výsledok výrazu bude tiež typu Dátum.
Pravidlo 2. Ak sú obidva operandy vo výraze odčítania typu Dátum, potom výsledok výrazu bude typu Double.
Sub Vychitanie() "Príklad aritmetického výrazu so znamienkom "-" Dim D1, D2 As Date "deklarácia premennej D1=Teraz "priradenie hodnoty aktuálny dátum premenná D1 D2=Now-5 "priradiť hodnotu dátumu premennej D2 MsgBox TypeName(D2), vbOKOnly, "Now-5" MsgBox TypeName(D1-D2), vbOKOnly, "D1-D2" End Sub
Násobenie
Znamienko (*) sa používa na vykonanie operácie násobenia, výsledkom tejto operácie je súčin operandov. Na určenie typu údajov výsledku výrazu násobenia používa VBA rovnaké pravidlá ako pre výrazy, ktoré používajú sčítanie. Vo výrazoch násobenia sa všetky premenné Variant obsahujúce hodnoty dátumu skonvertujú na číselné hodnoty.
"Príklad aritmetických výrazov so znamienkom "*" 4*10 "vynásobiť 4 10 MyVar*2 "vynásobiť MyVar 2 MyVar*OtherVar "vynásobiť MyVar hodnotou OtherVar
divízie
Znamienko (/) sa používa na vykonanie operácie delenia, toto znamienko sa nazýva znamienko delenia reálnych čísel. Vo výrazoch delenia sa jeden operand delí druhým a výsledkom delenia je kvocient.
"Príklad aritmetických výrazov so znamienkom"/"10/4" deliť 10 krát 4 MyVar/2 "delete MyVar by 2 MyVar/OtherVar" delte MyVar by OtherVar
Ak sa ktorýkoľvek operand vo výraze delenia vyhodnotí ako Null, potom bude výsledok výrazu tiež Null. Typ údajov v reálnych výrazoch delenia je zvyčajne Double, ale existuje výnimka.
Ak sú oba operandy vo výraze delenia typu Integer alebo Single, potom je výsledkom výrazu delenia typ Single. Ak výsledok prekročí rozsah pre Single, potom ho VBA skonvertuje na Double.
Celočíselné delenie
Znamienko (\) sa používa na vykonanie operácie delenia celého čísla, pri ktorej je výsledkom delenia vždy celé číslo bez zlomkovej časti. VBA nezaokrúhľuje podiel celočíselného delenia, ale jednoducho ho skráti na celé číslo, pričom zlomkovú časť zahodí.
Typ údajov výsledku celočíselného výrazu delenia je buď Integer alebo Long. VBA používa najmenší typ údajov, ktorý zodpovedá výsledku výrazu.
"Príklad aritmetických výrazov so znamienkom "\" 10\4 "delte 10 4; vráti hodnotu 2 MyVar\2 "delenie MyVar by 2 MyVar\OtherVar "delenie MyVar by OtherVar
Rozdelenie modulov
Znak (Mod) sa používa na vykonanie operácie modulo. Pri delení modulo výraz vráti iba zvyšok delenia ako celé číslo.
"Príklad aritmetických výrazov so znamienkom "Mod" 8 Mod 2 "vracia hodnotu 0; 5.1 Mod 3 "vráti hodnotu 2; 6 Mod MyVar "ak MyVar obsahuje 3, vráti 0
To je pochopiteľné vysvetlenie matematická operácia daný na jednom z fór programátorov. Odtiaľ budem citovať: "predstavte si, že je tam plná 50 l kanister a 3 l kanister. A vy začnete naberať vodu z kanistra dózou (môžete nakresliť len plnú). ." Inými slovami, 50 Mod 3 vráti 2.
Typ údajov výsledku výrazu modulo je Integer alebo Long. VBA používa najmenší typ, ktorý zodpovedá výsledku výrazu.
Umocňovanie
Znamienko (^) sa používa na vykonanie operácie umocnenia čísla alebo výrazu. Exponent udáva, koľkokrát sa má číslo alebo výraz vynásobiť.
"Príklad aritmetického výrazu so znamienkom "^" 3 ^ 3" je rovnaký ako 3*3*3, vráti hodnotu 27
Operátor priradenia (=)
Operátor priradenia sa používa na priradenie výsledku výrazu k premennej.
Operátor priradenia má dve syntaktické formy:
1 Nech varname = výraz
2 varname = výraz
varname- ľubovoľná premenná VBA
výraz- akýkoľvek výraz VBA
Prvá verzia operátora priradenia sa používala v raných programovacích jazykoch Basic. Druhá možnosť sa používa v modernej verzii VBA.
Pri vykonávaní príkazu priradenia VBA najskôr vyhodnotí výraz napravo od príkazu priradenia a potom uloží výsledok výrazu do premennej, ktorej názov je naľavo od znamienka rovnosti.
X = 5 + 7; Y = X + 5; Z = X - Y; A=B; ja = ja + 1
Začínajúci používatelia niekedy nechápu význam poslednej operácie priradenia, keď ľavá aj pravá časť operácie obsahuje rovnakú premennú. V tomto prípade sa najprv výsledok vyhodnotenia výrazu na pravej strane priraďovacieho operátora umiestni do medzipamäťovej bunky a následne sa tento výsledok priradí k premennej na ľavej strane.
Napríklad, ak v príkaze priradenia A = A +5 obsahovala premenná A pred operáciou priradenia hodnotu 7, potom po operácii bude obsahovať hodnotu 12 (7+5).
Malo by sa pamätať:
- Ľubovoľnú číselnú premennú (alebo výraz) môžete priradiť akejkoľvek inej premennej číselného typu (alebo premennej typu Variant);
- Ak zadanej premennej priradíte číselný výraz s nižšou presnosťou (napríklad Double - Long), VBA zaokrúhli hodnotu výrazu tak, aby zodpovedala presnosti premennej, ktorá nadobudne novú hodnotu;
- Keď je premennej String priradený variant obsahujúci číslo, VBA automaticky skonvertuje číslo na reťazec.
Operátor sčítania (+)
Operátor sčítania vykoná jednoduché sčítanie. Oba operandy musia byť číselné výrazy alebo reťazce, ktoré VBA dokáže previesť na číslo. Operátor sčítania možno použiť aj na vykonávanie aritmetických operácií s údajmi dátumu.
Typ údajov výsledku sčítacieho výrazu je zvyčajne rovnaký ako najpresnejší typ v tomto výraze. Existujú však výnimky:
- Výsledkom pridania typu Single a Long je Double;
- Pridanie typu Dátum k akémukoľvek inému typu údajov vždy povedie k dátumu;
- Ak výsledok prekročí rozsah typu Integer, VBA ho skonvertuje na Long;
- Ak výsledok presahuje typy Long, Single, Date, VBA ho skonvertuje na Double;
- Ak má ktorýkoľvek operand v sčítacom výraze hodnotu Null, potom je výsledok sčítacieho výrazu tiež Null.
Pripomeňte si poradie zvyšovania presnosti pre číselné typy údajov: Byte, Celé číslo, Dlhé, Jednoduché, Dvojité, Mena.
Malo by sa povedať, že je potrebné jasne pochopiť, ako VBA konvertuje typy údajov v dôsledku aritmetických operácií. V budúcnosti to pomôže vyhnúť sa mnohým „zbytočným“ chybám pri písaní kódu.
Operátor odčítania (-)
Operátor odčítania robí dve veci: používa sa na odčítanie jedného čísla od druhého; označuje jednočlenné znamienko mínus (toto je znamienko mínus, ktoré je umiestnené pred číslom, čím označuje, že ide o záporné číslo). Vloženie unárneho mínusu pred premennú alebo výraz je rovnaké ako vynásobenie tohto čísla číslom -1.
Oba operandy vo výraze odčítania musia byť číselné premenné (výrazy) alebo reťazcové výrazy, ktoré VBA dokáže previesť na číslo. Na prácu s dátumami môžete použiť operátor odčítania.
VBA používa rovnaké pravidlá na určenie typu údajov výsledku výrazu odčítania ako pre výrazy, ktoré používajú operátor sčítania. Je tu však dodatok:
Ak sú obidva operandy vo výraze typu Dátum, potom výsledok výrazu bude typu Double.
Operátor násobenia (*)
Operátor násobenia násobí dve čísla – výsledkom násobenia je súčin dvoch operandov. Oba operandy vo výraze násobenia musia byť číselné výrazy alebo reťazce, ktoré VBA dokáže previesť na číslo.
VBA sa riadi rovnakými pravidlami na určenie typu údajov výsledku výrazu násobenia ako pre výrazy, ktoré používajú operátor sčítania. Vo výrazoch násobenia sa všetky premenné Variant, ktoré obsahujú hodnoty dátumu, skonvertujú na číselné hodnoty.
Operátor divízie (/)
Operátor delenia s pohyblivou rádovou čiarkou vykonáva obvyklé aritmetické delenie svojich operandov.
Vo výrazoch delenia sa prvý operand delí druhým operandom - výsledkom delenia je kvocient.
Oba operandy vo výraze delenia s pohyblivou rádovou čiarkou musia byť číselné výrazy alebo reťazce, ktoré VBA dokáže skonvertovať na číslo.
Ak je aspoň jeden operand vo výraze delenia typu Null, potom výsledok delenia bude tiež Null.
Typ údajov operácie delenia s pohyblivou rádovou čiarkou je Double, okrem:
- Oba operandy vo výraze delenia sú typu Integer alebo Single - výsledok Single;
- Ak výsledok výrazu nepresahuje rozsah hodnôt pre typ Single.
Celočíselné delenie (\)
Delenie celým číslom sa líši od delenia s pohyblivou rádovou čiarkou tým, že jeho výsledkom je vždy celé číslo bez zlomkovej časti.
Oba operandy vo výraze celočíselného delenia musia byť číselné výrazy alebo reťazce, ktoré VBA dokáže skonvertovať na číslo.
Pred vykonaním operácie delenia celého čísla VBA zaokrúhli každý operand na číslo typu Integer alebo Long (rovnaký typ ako výsledok celočíselného delenia).
VBA zahodí (ale nezaokrúhli!) akýkoľvek zlomkový zvyšok výsledku celočíselného delenia. Napríklad výrazy 22\5 a 24\5 budú mať rovnaký výsledok = 4.
Ak je aspoň jeden operand vo výraze celočíselného delenia typu Null, potom je výsledok delenia tiež Null.
Modulo Division (Mod)
Modulo delenie, ako to bolo, dopĺňa celočíselné delenie. Pri delení modulo výraz vráti iba zvyšok operácie delenia ako celé číslo.
22 Mod 5 = 2
24 Mod 5 = 4
25 Mod 5 = 0
Zvyšné vlastnosti delenia modulo sú totožné s celočíselným delením.
Umocnenie (^)
Operátor umocnenia zvýši číslo na mocninu.
Oba operátory vo výraze umocňovania musia byť číselné výrazy alebo reťazce, ktoré VBA dokáže previesť na čísla.
Operand naľavo od operátora umocňovania môže byť záporné číslo iba vtedy, ak je operand napravo celé číslo.
Výsledok výrazu je typu Double.
Ak je aspoň jeden operand vo výraze typu Null, potom výsledok umocnenia bude tiež Null.
Zhrňme si vyššie uvedené.