Internet Windows Android

Operátori VBA excel. Logické operátory VBA

Jazyk VBA bol navrhnutý tak, aby sa dal pomerne ľahko a rýchlo naučiť a potom používať na dennej báze. Jazyk VBA je užitočný pre profesionálnych programátorov aj bežných používateľov na automatizáciu každodennej rutinnej práce. Nech už je váš cieľ akýkoľvek: zjednodušiť si každodennú prácu alebo zvýšiť produktivitu, jazyk VBA je určite najlepším jazykom na tieto účely, pretože je navrhnutý špeciálne na prácu s aplikáciami balíka Microsoft Office.

Znalosť operátorov je nevyhnutným základom pre učenie sa akejkoľvek témy vo VBA, t.j. Než sa začnete učiť jazyk, mali by ste venovať dostatok času operátorom a funkciám.

Operátori VBA

  • AppActivate title, počkajte- Aktivuje otvorenú aplikáciu podľa názvu alebo identifikátora úlohy špecifikovaného argumentom title
  • Pípni- zvukový signál
  • Volajte, argumentátor- Volanie procedúry s názvom name. (Pretože kľúčové slovo Call je voliteľné a procedúru môžete volať iba pomocou jej názvu, tento príkaz sa pri programovaní vo VBA používa zriedkavo)
  • Cesta ChDir- Nahradí aktuálny priečinok priečinkom určeným argumentom cesty
  • Zatvorte zoznam čísel súborov- Zmení aktuálnu jednotku na jednotku určenú argumentom jednotky
  • Const CONSTNAME- Deklaruje premennú s názvom CONSTNAME ako konštantu
  • Dátum = dátum- Zmení systémový dátum na dátum určený argumentom dátumu
  • Deklarovať meno- Deklaruje procedúru z dynamicky prepojovanej knižnice (DLL)
  • Rozsah písmen DefBool– Operátor na úrovni modulu, ktorý nastavuje booleovský údaj ako predvolený typ údajov pre všetky premenné, ktoré začínajú písmenami určenými argumentom letterrange (napríklad DefBool A-F)
  • Rozsah písmen DefByte- Nastaví Byte ako predvolený dátový typ pre všetky premenné, ktoré začínajú písmenami určenými argumentom letterrange
  • Rozsah písmen DefCur- Nastaví Menu ako predvolený typ údajov pre všetky premenné, ktoré začínajú písmenami určenými rozsahom písmen
  • Rozsah písmen DefDate- Nastaví dátum ako predvolený typ údajov pre všetky premenné, ktoré začínajú písmenami určenými argumentom letterrange
  • Rozsah písmen DefDbl- Nastaví Double ako predvolený typ údajov pre všetky premenné, ktoré začínajú písmenami určenými argumentom letterrange
  • Definitívny rozsah písmen- Nastaví Integer ako predvolený dátový typ pre všetky premenné, ktoré začínajú písmenami určenými argumentom letterrange
  • DefLng rozsah písmen- Nastaví Long ako predvolený typ údajov pre všetky premenné, ktoré začínajú písmenami určenými argumentom letterrange
  • Rozsah písmen DefObj- Nastaví Object ako predvolený dátový typ pre všetky premenné, ktoré začínajú písmenami určenými argumentom letterrange
  • Rozsah písmen DefSng- Nastaví Single ako predvolený typ údajov pre všetky premenné, ktoré začínajú písmenami určenými argumentom letterrange
  • Rozsah písmen DefStr- Nastaví String ako predvolený dátový typ pre všetky premenné, ktoré začínajú písmenami určenými argumentom letterrange
  • Rozsah písmen DefVar- Nastaví typ Variant ako predvolený typ údajov pre všetky premenné, ktoré začínajú písmenami určenými argumentom letterrange
  • DeleteStting názov aplikácie, sekcie, kľúč- Odstráni sekciu alebo kľúč z registra Windows
  • Dim varname- Deklarujte premennú s názvom varname
  • Urobiť: Slučka- Prechádza cez viacero príkazov, kým logická podmienka nie je True
  • Ukončiť kľúčové slovo- Ukončí procedúru, funkciu alebo riadiacu štruktúru
  • Názov Enum- Operátor na úrovni modulu, ktorý deklaruje premennú vymenovaného typu
  • Vymazať zoznam polí- Vymaže pamäť z dynamicky prideleného poľa alebo znovu inicializuje pole s pevnou veľkosťou
  • Chyba číslo chyby- Simuluje chybu nastavením objektu Err na číslo chyby
  • Event procedurename (arglist)- Operátor môže byť prítomný iba v module triedy. Deklaruje udalosť definovanú používateľom
  • Ukončiť kľúčové slovo- Výstup z procedúry, funkcie alebo riadiacej štruktúry
  • Zdroj FileCopy, cieľ- Skopíruje zdrojový súbor do cieľového priečinka (môžete zmeniť názov zdrojového súboru)
  • Pre každý:Ďalší- Prejdite cez každého člena zbierky
  • Pre: Ďalej- Opakujte niekoľko príkazov, kým počítadlo slučky nedosiahne špecifikovanú hodnotu
  • Funkcia- Deklaruje procedúru vlastnej funkcie
  • Získajte #filenumber, varname- Číta do premennej zo súboru I/O otvoreného príkazom Open
  • GoSub: Návrat- Vstúpi a opustí podprogram popísaný v postupe. (Používanie tohto vyhlásenia sa neodporúča, pretože vytvorenie samostatného postupu uľahčí pochopenie kódu)
  • Linka Prejsť na- Prenesie kontrolu na riadok kódu, na ktorý ukazuje štítok riadku
  • If:Then:Else- Spustí jeden z dvoch kusov kódu na základe výsledku logického testu
  • Imlements InterfaceName, Class- Definuje názov rozhrania alebo triedy, ktorá bude implementovaná v module triedy
  • Zadajte #číslo súboru, varlist- Číta zo súboru I/O do premenných
  • Zabiť názov cesty- Odstráni cestu k súboru z disku
  • Nech varname = výraz- Nastaví premennú varname na výraz. Kľúčové slovo Let je voliteľné a takmer sa nepoužíva
  • Riadkový vstup #číslo súboru, var- Prečíta jeden riadok z I/O súboru a uloží ho do reťazcovej premennej
  • Naložiť- Načíta formulár do pamäte, ale nezobrazuje ho na obrazovke
  • Zamknúť #číslo súboru, rozsah záznamu- Riadi prístup k I/O súboru
  • LSet stringvar = string- Umiestni reťazec, počnúc znakom úplne vľavo, do premennej typu String. V tomto prípade sa veľkosť premennej nemení
  • LSet var1 = var2- Skopíruje premennú jedného typu definovaného používateľom do premennej iného, ​​ale kompatibilného typu definovaného používateľom
  • Stred- Nahradí určený počet znakov v reťazcovej premennej znakmi z iného reťazca
  • MidB- Nahrádza znaky v reťazcovej premennej bajt po byte znakmi z iného reťazca
  • Cesta MkDir- Vytvorí priečinok s názvom cesta
  • Pomenujte starú cestu ako novú- Zmení názov súboru alebo priečinka
  • Pri chybe- Nastavuje spôsob spracovania chýb
  • On:GoSub, On:GoTo- Prenesie kontrolu na daný reťazec na základe výsledku výrazu
  • Otvoriť názov cesty, :- Otvorí súbor pre I/O
  • Možnosť Základ 0|1- Nastaví (na úrovni modulu) pre polia predvolenú dolnú hranicu (číslo prvého prvku)
  • Možnosť Porovnať text|Binárne- Definuje (na úrovni modulu) predvolený režim porovnávania reťazcov
  • Možnosť Explicitná- Núti programátora explicitne deklarovať premenné. Zadajte tento príkaz na úrovni modulu
  • Možnosť Súkromné- Označuje, že modul je zatvorený a nedá sa k nemu dostať z procedúr umiestnených v iných moduloch. Zadajte operátora na úrovni modulu
  • Vytlačiť #číslo súboru- Zapisuje do I/O súboru
  • Súkromná premenná- Deklaruje, že premenná varname bude súkromná a môže byť použitá iba v module, v ktorom je deklarovaná. Zadajte operátora na úrovni modulu
  • Property Get- Deklaruje majetkovú procedúru, ktorá bude akceptovať hodnoty tejto vlastnosti
  • Prenájom nehnuteľnosti- Priraďuje hodnotu vlastnosti v procedúre vlastníctva
  • Sada vlastností- Nastaví odkaz na objekt v procedúre vlastnosti
  • Verejná premenná- Poskytuje prístup k premennej varname pre všetky procedúry obsiahnuté v module
  • Zadajte #filenumber,varname- Zapisuje dáta z premennej varname do I/O súboru
  • Názov udalosti RaiseEvent, argumenty- Vyvolá udalosť s názvom eventname
  • Randomizujte číslo- Inicializuje generátor náhodných čísel. Preskočte argument číslo, aby ste ho zakaždým inicializovali iným zdrojom
  • ReDim varname- Znovu pridelí pamäť pre dynamické pole
  • Rem komentár- Povie VBA, že text za vyhlásením je komentár. Namiesto tohto operátora sa často používa symbol apostrofu
  • Resetovať- Zatvorí všetky I/O súbory, ktoré boli predtým otvorené príkazom Open
  • Pokračovať- Po výskyte chyby obnoví vykonávanie programu od riadku, kde sa vyskytla chyba
  • Cesta RmDir- Vymaže priečinok
  • RSet stringvar = string- Zapíše reťazec do premennej reťazca, pričom znaky zarovná doprava
  • Názov aplikácie SaveSetting,:- Vytvára alebo ukladá nastavenia v registri Windows
  • Hľadaj #číslo súboru, pozíciu- Nastaví aktuálnu pozíciu v I/O súbore
  • Vyberte položku Prípad- Vykoná skupinu príkazov na základe hodnoty výrazu
  • Reťazec SendKeys, počkajte- Prenáša stlačenia kláves špecifikované reťazcom do aktívnej aplikácie, ako keby boli zadané z klávesnice
  • Nastavte objectvar = objekt- Priradí objekt objektu k objektovej premennej s názvom objectvar
  • SetAttr cesta, attr- Nastaví atribúty prístupu určené argumentom attr (napríklad vbReadOnly) pre súbor určený argumentom názvu cesty
  • Statická premenná- Deklaruje (na úrovni modulu), že premenná varname si zachová svoju hodnotu, kým sa vykoná kód modulu
  • Stop- Prepne VBA do režimu pozastavenia
  • Sub- Vyhlasuje postup
  • Čas = čas- Nastaví systémový čas na argument času
  • Zadajte názov premennej- Deklaruje vlastný typ údajov. (Používa sa len na úrovni modulu)
  • Vyložiť- Odstráni formulár z pamäte
  • Odomknite #číslo súboru, rozsah záznamu- Odstráni prístupové atribúty pre I/O súbor
  • Kým: Wend- Prechádza cez skupinu príkazov, kým logická podmienka nie je pravdivá
  • Width #filenumber, width- Nastaví šírku čiary pre I/O súbor
  • With: End With- Vykoná skupinu príkazov pre daný objekt
  • Napíšte #číslo súboru- Zapisuje dáta do I/O súboru
znamenienázovPopis
= Rovná saVráti hodnotu True, ak sú ľavý a pravý operand rovnaké. Upozorňujeme, že ide o preťaženie operátora priradenia.
<> Nerovná saAk ľavý a pravý operand nie sú rovnaké, vráti hodnotu True.
> Lepšie akoVráti hodnotu True, ak je ľavý operand väčší ako pravý operand.
< Menej akoVráti hodnotu True, ak je ľavý operand menší ako pravý operand.
>= Viac alebo rovnakéVráti hodnotu True, ak je ľavý operand väčší alebo rovný pravému operandu.
<= Menej alebo rovnakéVráti hodnotu True, ak je ľavý operand menší alebo rovný pravému operandu.
Je Referenčný kapitálVráti hodnotu True, ak je ľavý odkaz na objekt rovnaký ako odkaz na pravý objekt. Dá sa použiť aj s Nothing (odkaz na nulový objekt) na oboch stranách. Poznámka. Operátor Is sa pred vykonaním porovnania pokúsi prinútiť oba operandy k objektu. Ak je niektorá strana primitívneho typu alebo Variant, ktorý neobsahuje objekt (buď neobjektový podtyp alebo vtEmpty) porovnanie, bude mať za následok runtime chybu 424 - "Vyžaduje sa objekt". Ak niektorý operand patrí inému rozhranie rovnaký objekt, porovnanie vráti True . Ak potrebujete skontrolovať spravodlivosť oboch inštancií, potom A rozhranie, ObjPtr(vľavo) = ObjPtr(vpravo) použite ObjPtr(vľavo) = ObjPtr(vpravo) .

Poznámky

Syntax VBA umožňuje „reťazenie“ porovnávacích operátorov, ale vo všeobecnosti by sa týmto konštruktom malo vyhnúť. Porovnanie sa vždy vykonáva zľava doprava iba na 2 operandoch naraz a výsledkom každého porovnania je logická hodnota. Napríklad výraz...

A = 2: b = 1: c = 0 expr = a > b > c

V niektorých kontextoch sa dá čítať ako testovanie, či b je medzi a a c. Vo VBA sa to hodnotí takto:

A = 2: b = 1: c = 0 výraz = a > b > c výraz = (2 > 1) > 0 výraz = Pravda > 0 výraz = -1 > 0 "CInt(pravda) = -1 výraz = nepravda

Akýkoľvek operátor porovnávania iný ako Is použitý s objektom ako operandom bude vykonávať na návratovej hodnote predvoleného člena objektu Object. Ak objekt nemá predvolený člen, porovnanie bude mať za následok chybu behu 438 - "Objekt nepodporuje svoju vlastnosť alebo metódu."

Ak objekt nie je inicializovaný, porovnanie bude mať za následok runtime chybu 91 - "Object variable or With block variable locked."

Ak sa literál Nič použije s iným operátorom porovnávania ako Is, bude to mať za následok chybu kompilácie – „Nezákonné použitie objektu“.

Ak je predvolený objekt Object iný Objekt, VBA bude neustále volať predvolený prvok každej nasledujúcej návratovej hodnoty, kým sa nevráti primitívny typ alebo kým sa nevyvolá chyba. Predpokladajme napríklad, že SomeClass má predvolený člen Value , čo je inštancia ChildClass s členom ChildValue ChildValue . Porovnanie...

Sada x = New SomeClass Debug.Print x > 42

Bude hodnotené ako:

Sada x = New SomeClass Debug.Print x.Value.ChildValue > 42

Ak je jeden z operandov číselný a ďalší operand je String alebo Variant podtypu String, vykoná sa číselné porovnanie. V tomto prípade, ak sa reťazec nedá namapovať na číslo, výsledkom porovnania bude chyba behu 13 – „Nesúlad typu“.

Ak oboje operandy sú String alebo Variant podtypu String, porovnanie reťazcov sa vykoná na základe porovnávacieho parametra parametrov kódového modulu. Tieto porovnania sa robia na základe jednotlivých znakov. poznač si to symbolické znázornenie Reťazec obsahujúci číslo nie je to isté ako párovanie číselných hodnôt:

Public Sub Example() Dim left As Variant Dim right As Variant left = "42" right = "5" Debug.Print left > right "Prints False Debug.Print Val(left) > Val(right) "Prints True End Sub

Z tohto dôvodu sa pred vykonaním porovnávania numerickej nerovnosti uistite, že premenné typu String alebo Variant sa odovzdávajú číslam.

Ak je jedným z operandov dátum, potom sa vykoná číselné porovnanie na podkladovom dvojitom, ak je druhý operand číselný alebo ho možno previesť na číselný typ.

Ak je druhým operandom Reťazec alebo Variant podtypu Reťazca, ktorý možno pretypovať na Dátum pomocou aktuálneho miestneho nastavenia, Reťazec sa pretypuje na Dátum . Ak sa nedá použiť na Dátum v aktuálnom jazyku, výsledkom porovnania bude chyba spustenia 13 – „Nesúlad typu“.

Pri porovnávaní hodnôt Double alebo Single a Booleans by ste mali byť opatrní. Na rozdiel od iných číselných typov nemožno nenulové hodnoty považovať za pravdivé kvôli správaniu VBA pri podpore typu porovnávacích údajov pomocou čísla s pohyblivou rádovou čiarkou v Double:

Public Sub Example() Dim Test As Double Test = 42 Debug.Print CBool(Test) "Prints True" je povýšené na Double - Test nie je prenesený na Boolean Debug.Print Test = True "Prints False "S explicitným pretypovaním: Debug.Print CBool(Test) = True "Vytlačí True Debug.Print CDbl(-1) = CDbl(True) "Vytlačí True End Sub

Všetky aritmetické operátory, porovnávacie operátory, logické operátory a operátory zreťazenia sú tu podrobne popísané. Snažil som sa zhromaždiť všetko, čo potrebujete vedieť o týchto operátoroch. Každé vyhlásenie je vybavené príkladom. Popisy som preložil zo štandardného Help"a VB5.

Aritmetické operátory

operátor ^ (umocnenie)

Tento operátor sa používa na zvýšenie čísla na mocninu.

Syntax:

výsledok = číslo^stupňa

Možnosti:

výsledok
číslo
stupňa- požadovaný; akýkoľvek číselný výraz

Poznámky:

číslo môže byť negatívny iba vtedy stupňa- celé číslo. Ak sa v jednom výraze použije niekoľko operátorov ^, výpočet prebieha zľava doprava. Typ výsledku je zvyčajne Double. Ak však resp stupňa, alebo číslo- Tak teda nulový výraz výsledok tiež Null.

Príklad:

Dim MyValue
MojaHodnota = 2^2" Vráti 4.
MojaHodnota = 2^3^3" Vráti sa 512 (2^3=8, 8^3=512)
MojaHodnota = (-5)^3" Vráti sa -125.

Poraďte:

Ak potrebujete zvýšiť číslo na konštantnú mocninu, potom je lepšie použiť niekoľko operátorov - násobenia, ako jeden - zvýšenie na mocninu, posúďte sami, prešiel cyklus miliónov prechodov s výpočtom výrazu:

test1 = 2^8" 893 ms
test1 = 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2 "130 ms!

operátor * (násobenie)

Používa sa na násobenie dvoch čísel.

Syntax:

výsledok = číslo 1* číslo2

Možnosti:

výsledok- požadovaný; ľubovoľná číselná premenná
číslo 1- Nevyhnutne; akýkoľvek číselný výraz
číslo2- Nevyhnutne; akýkoľvek číselný výraz

Poznámky:

Dátový typ výsledku je zvyčajne rovnaký ako najpresnejší typ dvoch čísel. Poradie presnosti od najvyššej po najnižšiu je bajt, celé číslo, dlhé, jednoduché, meny, dvojité, desatinné. Pravda, existujú výnimky:

  • Ak sa vynásobí Single a Long, výsledkom je Double
  • Ak typ údajov výsledok- Long Single alebo Date, ktorý neobsahuje výsledok samotného výrazu, potom sa výsledok prevedie na Variant obsahujúci Double.

Ak číslo 1 alebo číslo2

Poradie presnosti pri násobení sa líši od poradia sčítania a odčítania.

Príklad:

Dim MyValue
MojaHodnota = 2 * 2 " Vráti 4.
MojaHodnota = 459,35 * MojaHodnota " Návratnosť 495,35 * 4

operátor / (oddelenie)

Používa sa na rozdelenie dvoch čísel a získanie výsledku s pohyblivou rádovou čiarkou.

Syntax:

výsledok = číslo 1 / číslo2

Možnosti:

výsledok- požadovaný; ľubovoľná číselná premenná
číslo 1- Nevyhnutne; akýkoľvek číselný výraz
číslo2- Nevyhnutne; akýkoľvek číselný výraz

Poznámky:

Výsledok zvyčajne typu Double. Pravda, existujú výnimky:

  • Ak sú oba výrazy typu Byte, Integer, Single, výsledkom je Single. Ak sa však rozmery výrazu nezmestia do rozsahu Single, nastane chyba.
  • Ak sú oba výrazy typu Variant obsahujúce Byte, Integer alebo Single, výsledkom je Single Variant. Ak sa však rozmery výrazu nezmestia do Single Variant, tak Double Variant.
  • Ak je jedno z čísel typu Desatinné, výsledok je Desatinné.

Ak číslo 1 alebo číslo2- Null, potom sa to interpretuje jednoducho ako obyčajná 0.

Príklady:

Dim MyValue
MojaHodnota = 10/4" !} Vráti sa 2.5.
MojaHodnota = 10 / 3 " Vráti sa 3.333333.

operátor \ (celočíselné delenie)

Používa sa na rozdelenie dvoch čísel a získanie celočíselného výsledku.

Syntax:

výsledok = číslo 1 \ číslo2

Možnosti:

výsledok- požadovaný; ľubovoľná číselná premenná
číslo 1- Nevyhnutne; akýkoľvek číselný výraz
číslo2- Nevyhnutne; akýkoľvek číselný výraz

Poznámky:

Pred takýmto delením sa výrazy zaokrúhlia na výrazy Byte, Integer alebo Long. Typ údajov výsledku je zvyčajne Byte, Bytový variant, Celé číslo, Celočíselný variant, Dlhý alebo Dlhý variant. Akákoľvek zlomková časť je odrezaná.

Ak je však niektorý z výrazov Null, potom je výsledok Null. Akýkoľvek výraz obsahujúci Empty sa interpretuje ako 0.

Príklady:

Dim MyValue
MojaHodnota = 11\4" Vráti sa 2.
MojaHodnota = 9\3" Vráti sa 3.
MojaHodnota = 100\3" Vráti sa 33.

Mod operátor (zvyšok divízie)

Používa sa na rozdelenie dvoch čísel a získanie zvyšku ich delenia.

Syntax:

výsledok = číslo 1 Mod číslo2

Možnosti:

výsledok- požadovaný; ľubovoľná číselná premenná
číslo 1- Nevyhnutne; akýkoľvek číselný výraz
číslo2- Nevyhnutne; akýkoľvek číselný výraz

Poznámky:

Pri delení sa čísla s pravou bodkou zaokrúhľujú. Napríklad výsledok nasledujúceho výrazu je 5:

A = 19 Mod 6.7

Čo sa tu deje? Najprv sa číslo 6,7 zaokrúhli na 7. Potom dôjde k deleniu, dostaneme 2,7.... Zvyšok delenia = 5. (2 * 7 = 14, 19 - 14 = 5).

Výsledok je zvyčajne typu Byte, Byte variant, Integer, Integer variant, Long alebo Variant obsahujúci Long.

Ak má niektorý z výrazov hodnotu Null, potom je výsledok Null. Akýkoľvek výraz obsahujúci Empty sa interpretuje ako 0.

Príklady:

Dim MyResult
Môj výsledok = 10 Mod 5" Vráti sa 0.
Môj výsledok = 10 Mod 3" Vráti sa 1.
Môj výsledok = 12 Mod 4,3" Vráti sa 0.
Môj výsledok = 12,6 Mod 5" Vráti sa 3.

operátor + (dodatok)

Používa sa na sčítanie dvoch čísel.

Syntax:

výsledok = výraz1+výraz2

Možnosti:

výsledok- požadovaný; ľubovoľná číselná premenná
výraz1
výraz2- Nevyhnutne; akýkoľvek výraz

Poznámky:

Keď použijete operátor +, nemôžete určiť, či dôjde k pridaniu alebo zreťazeniu reťazcov. Na zreťazenie použite operátor &, aby ste sa vyhli nejasnostiam a kód bol čitateľnejší.

Ak jeden z výrazov nie je variant, platia nasledujúce pravidlá:

  • Ak sú oba výrazy číselného typu (Byte, Boolean, Integer, Long, Single, Double, Date, Currency alebo Decimal), potom sa pridajú.
  • Ak sú oba reťazcové výrazy zreťazené.
  • Ak je jeden z výrazov číselného typu a druhý je ľubovoľná hodnota Variant vrátane hodnoty Null, dôjde k sčítaniu.
  • Ak je jedným z výrazov reťazec a druhým je ľubovoľná hodnota Variant, dôjde k zreťazeniu.
  • Ak jeden z výrazov obsahuje hodnotu Empty, vráti sa druhý nezmenený výraz.
  • Ak je jeden z výrazov číselného typu a druhý je reťazec, objaví sa chyba typu nesúlad.
  • Ak je akýkoľvek výraz Null, potom je výsledok tiež Null.

Ak sú oba výrazy Variant, potom platia nasledujúce pravidlá:

  • Ak sú oba výrazy čísla, potom sa sčítajú.
  • Ak sú oba výrazy reťazce, potom sú zreťazené.
  • Ak je jeden z výrazov číslo a druhý reťazec, dôjde k sčítaniu.

Pre bežné sčítanie je dátový typ výsledku zvyčajne rovnaký ako najpresnejší typ z dvoch čísel. Poradie presnosti je Byte, Integer, Long, Single, Double, Currency a Decimal. Existujú výnimky:

  • Ak sa pridá Single a Long, výsledkom je Double
  • Ak sa výraz typu Dátum pridá k akýmkoľvek iným výrazom, výsledkom bude Dátum.

Ak je jeden alebo oba výrazy Null, potom je výsledok tiež Null. Ak oba výrazy obsahujú hodnotu Empty, výsledkom je celé číslo. Ak existuje iba jeden, potom sa ako výsledok vráti nezmenený druhý výraz.

Príklady:

Dim Moje číslo, Var1, Var2
MojeČíslo = 2 + 2 " Vráti sa 4.
MojeČíslo = 4257,04 + 98112 " Vráti sa 102369.04.

Var1 = "34"
Var2 = 6 "Inicializujte zmiešané premenné
MojeČíslo = Var1 + Var2 " Vráti sa 40.

Var1 = "34"
Var2 = "6" "Inicializujte premenné pomocou reťazcov
MojeČíslo = Var1 + Var2 " Vráti sa"346" (vyskytlo sa
„spájanie, nie sčítanie!).

Poraďte:

Operátor sčítania (+) je možné použiť na pridávanie dátumov, t.j. Premenné typu dátumu:

Tlmiť d Ako Dátum
d = DateSerial(2002, 8, 15) " inicializácia dátumu 15.08.2002
d = d + 15 " teraz d obsahuje dátum 30.08.2002
„t. j. pridali sme 15 dní

operátor - (odčítanie, zmena znamienka)

Používa sa na nájdenie rozdielu medzi dvoma číslami, alebo tiež na zmenu znamienka výrazu.

Syntax:

výsledok = výraz1- výraz2

-výraz

Možnosti:

výsledok- požadovaný; ľubovoľná číselná premenná
výraz- Nevyhnutne; akýkoľvek výraz
výraz1- Nevyhnutne; akýkoľvek výraz
výraz2- Nevyhnutne; akýkoľvek výraz

Poznámky:

V prvej syntaxi je operátor "-" potrebný na nájdenie rozdielu medzi dvoma číslami. V druhej syntaxi sa "-" používa na zmenu znamienka výrazov.

Dátový typ výsledku je zvyčajne rovnaký ako najpresnejší typ dvoch čísel. Poradie presnosti je Byte, Integer, Long, Single, Double, Currency a Decimal. Existujú výnimky:

  • Ak sú do odčítania zahrnuté typy Single a Long, výsledkom je Double
  • Ak odčítanie používa výraz typu Dátum,
    výsledkom je potom dátum.
  • Odčítaním dvoch dátumov dostaneme výsledok Double.

Ak je jeden alebo oba výrazy Null, potom je výsledok tiež Null. Ak je jeden z výrazov prázdny, potom sa interpretuje ako 0.

Poradie presnosti sčítania a odčítania sa líši od poradia používaného pri násobení.

Príklady:

Dim MyResult
Môj výsledok = 4 - 2 " Vráti sa 2.
Môj výsledok = 459,35 – 334,90 " Vráti sa 124.45.

Poraďte:

Podobne ako operátor sčítania, aj operátor odčítania možno použiť na výpočet rozdielu (v dňoch) medzi dvoma dátumami:

Stlmiť d1 Ako Dátum
Dim d2 As Date
Dim razn As Long
d1 = DateSerial(1983, 10, 14)
d2 = DateSerial(2002, 8, 15)
razn = d2 - d1 " rozdiel v dňoch (6880).

Porovnávacie operátory

Používa sa na porovnanie určitých výrazov. Majú 3 syntaxe:

Syntax:

výsledok = výraz1 operátor porovnávania výraz2
výsledok = objekt1 Je objekt2
výsledok = riadok Páči sa mi to vzorka

Možnosti:

výsledok požadovaný; akúkoľvek číselnú premennú
výraz Nevyhnutne; akékoľvek vyjadrené
operátor porovnávania požadovaný; akýkoľvek operátor porovnávania
objekt požadovaný; názov akéhokoľvek objektu
riadok požadovaný; ľubovoľný reťazcový výraz.
vzorka požadovaný; akýkoľvek reťazcový výraz alebo rozsah písmen a číslic

Poznámky:

Nasledujúca tabuľka obsahuje zoznam porovnávacích operátorov a podmienok, ktoré určujú výsledok výrazu (pravda alebo nepravda).

Operátor

Pravda, ak

Nepravdivé, ak

Null if

< (меньше чем) výraz1 <
výraz2
výraz1 >=
výraz2

jeden
od
výraz obsahuje Null

<= (меньше или равно) výraz1 <=
výraz2
výraz1 >
výraz2
> (viac ako) výraz1 >
výraz2
výraz1 <=
výraz2
>= (väčšie alebo rovné) výraz1 >=
výraz2
výraz1 <
výraz2
= (rovná sa) výraz1 =
výraz2
výraz1 <>
výraz2
<>(nerovná sa) výraz1 <>
výraz2
výraz1 =
výraz2

Operátory Is a Like vykonávajú špecifické funkcie a ich porovnávacia tabuľka sa líši od tej, ktorá je zobrazená (pozrieme sa na ne nižšie).

Keď sa porovnávajú dva výrazy, nie je vždy možné určiť, či sa budú porovnávať čísla alebo reťazce. Nasledujúci text ukazuje, ako sa vypočíta výsledok, ak sú oba výrazy iného typu ako Variant:

  • Ak sú oba výrazy čísla (Byte, Boolean, Integer, Long, Single, Double, Date, Currency alebo Decimal), potom sa čísla porovnajú.
  • Ak sú oba výrazy reťazce, dôjde k porovnaniu reťazcov. (menší riadok je ten, ktorého prvé a nasledujúce písmená majú menší ascii kód).
  • Ak je jeden z výrazov číslo a druhý variant, ktorý možno interpretovať ako číslo, potom sa čísla porovnajú.
  • Ak je jedným z výrazov číslo a druhým variantom je reťazec, ktorý nemožno interpretovať ako číslo, dôjde k chybe (Nesúlad typu).
  • Ak je jedným z výrazov reťazec a druhým je ľubovoľná hodnota Variant (dokonca aj hodnota Null), dôjde k porovnaniu reťazcov.
  • Ak je jeden z výrazov Prázdny a druhý číslo, potom dôjde k porovnaniu čísel, kde Prázdne sa považuje za 0.
  • Ak je jeden z výrazov prázdny a druhý reťazec, dôjde k porovnaniu reťazcov, kde sa s výrazom Empty zaobchádza ako s prázdnym reťazcom "".

Ak sú prvý výraz aj druhý typu Variant, potom sa výrazy porovnávajú podľa typov údajov, ktoré Variant obsahuje:

  • Ak oba výrazy Variant obsahujú čísla, potom sa čísla porovnajú.
  • Ak oba výrazy Variant obsahujú reťazce, reťazce sa porovnajú.
  • Ak jeden z výrazov Variant obsahuje číslo a druhý reťazec, potom je číselný výraz menší ako reťazcový.
  • Ak je jeden z výrazov Variant Prázdny a druhý číslo, potom sa Prázdny považuje za 0.
  • Ak je jeden z výrazov Variant Prázdny a druhý reťazec, potom sa Prázdny považuje za prázdny reťazec "".
  • Ak sú oba výrazy prázdne, potom sa považujú za rovnaké.

Keď sa premenná Single porovná s premennou Double, premenná Double sa zaokrúhli na presnosť premennej Single.

Ak sa mena porovná s jednou alebo dvojitou, potom sa jedna alebo dvojitá prevedie na menu. Podobne pri porovnávaní desatinných miest s jednoduchým alebo dvojitým, potom sa jednoduché alebo dvojité prevedie na desatinné. V prípade meny sa môže stratiť akákoľvek zlomková časť menšia ako 0,0001. Pre desatinné číslo je táto hodnota 1E-28, inak sa môže vyskytnúť chyba. Keď sa teda zlomková časť stratí, výrazy možno interpretovať ako rovnaké, hoci v skutočnosti sa jeden od druhého bude líšiť. (aj keď v malom množstve).

Príklady:

Dim MyResult, Var1, Var2
Môj výsledok = (45< 35) " Vráti sa Nepravdivé.
Môj výsledok = (45 = 45) " Vráti sa Pravda.
Môj výsledok = (4<> 3) " Vráti sa Pravda.
Môj výsledok = ("5" > "4") " Vráti sa Pravda.

Var1 = "5": Var2 = 4 "vo VB môžete použiť dvojbodku,
“ na samostatné vyhlásenia.

Môj výsledok = (Premenná1 > Premenná2) " Vráti sa Pravda.

Var1 = 5: Var2 = Prázdny
Môj výsledok = (Premenná1 > Premenná2) " Vráti sa Pravda.

Var1 = 0: Var2 = Prázdny
MyResult = (Var1 = Var2) " Vráti sa Pravda.

porovnávací operátor Is

Tento operátor sa používa na porovnávanie objektových premenných.

Syntax tohto operátora je uvedená vyššie.

Poznámky:

Ak objekt1 a objekt1 odkazujú na ten istý objekt, výsledok je True, ak nie, potom False. Dve premenné môžu odkazovať na ten istý objekt viac ako jedným spôsobom. V nasledujúcom príklade A odkazuje na rovnaký objekt ako B:

Set A = B

Nasledujúci príklad umožňuje, aby premenné A a B odkazovali na rovnaký objekt - C:

Nastavte A = C
Nastavte B=C

Príklady:

Dim MyObject, YourObject, ThisObject, _
OtherObject, ThatObject, MyCheck

Nastavte YourObject = MyObject "vytvorte odkazy na objekty
Set ThisObject = MyObject
Nastavte ThatObject = OtherObject
MyCheck = YourObject Is ThisObject " Vráti hodnotu True.
MyCheck = ThatObject Is ThisObject " Vráti hodnotu False.
"Predpokladáme, že MyObject<>OtherObject
MyCheck = MyObject Is ThatObject " Vráti hodnotu False.

Operátor porovnávania reťazcov - Like

Operátor porovnávania reťazcov Like sa používa na porovnávanie reťazcov.

Syntax tohto operátora už bola diskutovaná vyššie.

komentár:

Tento operátor možno použiť na testovanie reťazca oproti maske vzoru. Toto je veľmi výkonný operátor, takmer analogický s regulárnymi výrazmi v Perle.

Takže tento operátor funguje nasledovne. Ak sa reťazec zhoduje s maskou, výsledok je True. Ak nie - nepravda. Ak je jeden z výrazov Null, výsledok je tiež Null.

Správanie operátora Like závisí od predvoleného typu porovnávania reťazcov. (Operátor možnosť Porovnať).

Ak je typ nastavený na Binary (t.j. binárne porovnanie), tak sa reťazce porovnávajú podľa ich Ascii kódov (v rôznych kódovaniach sa líšia). Zvyčajne sa používa nasledujúca postupnosť:

A< B < E < Z < a < b < e < z < А < К < Я < а < к < я

Ak je typ nastavený na Text (porovnanie textu). S týmto porovnaním sa postupnosť líši od predchádzajúcej, tu sú veľké a malé písmená rovnaké:

(A=a)< (А=а) < (B=b) < (E=e) < (К=к) < (Z=z) < (Я=я)

Najdôležitejšou funkciou operátora Like je kontrola, či reťazec patrí maske. V maske je možné použiť nasledujúce špeciálne zložky. postavy:

Akákoľvek jedna postava
* Žiadny alebo viac znakov
# Ľubovoľné číslo (0–9).
Každá jedna postava, ktorá spadá do charlistu
[!charlist] Akýkoľvek jednotlivý znak, ktorý nie je zahrnutý v zozname znakov

Tu je rýchla poznámka. Na kontrolu identity reťazca na maske obsahujúcej špeciálne. symboly (t. j. skontrolujte napríklad, či reťazec obsahuje symboly [,?,#,],*), potom ich musíte uzavrieť do hranatých zátvoriek. Nemôžete len tak vložiť samostatnú zátvorku [ alebo ].

Pri zadávaní zoznamu znakov môžete použiť pomlčku (–). Napríklad, ak chcete zadať postupnosť od A do Z, musíte použiť masku. Všetko v zátvorkách nesmie obsahovať žiadne oddeľovače (medzery, čiarky a pod.), inak sa zaradia aj do postupnosti.

Pri kontrole pomocou masky existujú ďalšie dôležité pravidlá:

  • Znak (!) na začiatku zoznamu symbolov znamená, že musíte vyhľadať symboly, ktoré nie sú zahrnuté v tomto zozname. Ak potrebujete nájsť samotný znak!, musíte vložiť zátvorky [!].
  • (–) sa používa na určenie rozsahu znakov.
  • Keď je zadaný rozsah znakov, musí sa zvyšovať v kódoch ASCII. Tie. správna maska, alebo nie.
  • Sekvencia sa interpretuje ako prázdny reťazec "".

Príklady:

Dim MyCheck
MyCheck = "aBBBa" Ako "a*a" " Vráti hodnotu True.
MyCheck = "F" Like "" " Vráti hodnotu True.
MyCheck = "F" Ako "[!A-Z]" " Vráti hodnotu False.
MyCheck = "a2a" Ako "a#a" " Vráti hodnotu True.
MyCheck = "aM5b" Ako "a#[!c-e]" " Vráti hodnotu True.
MyCheck = "BAT123khg" ako "B?T*" " Vráti hodnotu True.
MyCheck = "CAT123khg" ako "B?T*" " Vráti hodnotu False.

myString = "312T-87GD-8922"

Ak myString Ako „###-##-####“ Potom...

Operátory zreťazenia reťazcov

V skutočnosti na zreťazenie reťazcov vo Visual Basicu môžete použiť iba 2 operátory. Toto sú & a +. Operátor + je popísaný vyššie. Poďme hovoriť o operátorovi &.

operátor zreťazenia reťazcov - &

Používa sa na zreťazenie dvoch výrazov.

Syntax:

výsledok = výraz1 & výraz2

výsledok požadovaný; Ľubovoľná premenná typu reťazec alebo variant
výraz1 Nevyhnutne; Akýkoľvek výraz
výraz2 Nevyhnutne; Akýkoľvek výraz

Poznámky:

Ak výraz nie je reťazec, potom sa skonvertuje na variant reťazca. Výsledný dátový typ je String, iba ak sú oba výrazy typu String. V opačnom prípade je výsledkom String Variant. Ak sú oba výrazy Null, potom je výsledok tiež Null. Ak však iba jeden z výrazov obsahuje hodnotu Null, potom sa interpretuje ako prázdny reťazec "". Prázdne sa tiež interpretuje ako prázdny reťazec "".

Príklady:

Dim MyStr
MyStr = "Ahoj" & "Svet"
" Vráti sa reťazec „Ahoj svet“.
MyStr = "Skontrolovať" & 123 & "Skontrolovať"
" Vráti reťazec "CHECK 123 CHECK".

Logické operátory

Toto je najzaujímavejšia skupina operátorov. Pri programovaní musíte poznať ich fungovanie a aplikáciu (a to nielen vo Visual Basicu).

Vo Visual Basicu je ich 6. Pozrime sa podrobne na každého operátora.

A operátor

Používa sa na vykonanie logického násobenia cez dva výrazy.

Syntax:

výsledok = výraz1 A výraz2

výsledok
výraz1 Nevyhnutne; Akýkoľvek výraz
výraz2 Nevyhnutne; Akýkoľvek výraz

Poznámky:

Nasledujúca tabuľka ukazuje, ako funguje operátor And:

Ak výraz1 =

a výraz2 =

Potom výsledok =

Pravda Pravda Pravda
Pravda Nepravdivé Nepravdivé
Pravda Nulový Nulový
Nepravdivé Pravda Nepravdivé
Nepravdivé Nepravdivé Nepravdivé
Nepravdivé Nulový Nepravdivé
Nulový Pravda Nulový
Nulový Nepravdivé Nepravdivé
Nulový Nulový Nulový

Operátor And sa používa aj na testovanie bitov čísla. Pre bity funguje operátor And nasledovne (pri pohľade zľava doprava)

0 0 0
0 1 0
1 0 0
1 1 1

Príklady:

Dim A, B, C, D, MyCheck
MyCheck = A > B a B > C " Vráti sa Pravda.
MyCheck = B > A a B > C " Vráti sa Nepravdivé.
MyCheck = A > B a B > D " Vráti sa Nulový.
MyCheck = A a B" Vráti sa8 (bitové porovnanie).

Pozrime sa na posledný príklad podrobnejšie. Číslo 10 je znázornené ako bity nasledovne (ako tetráda, t.j. 4 bity):

A číslo 8 je takéto:

V dôsledku operátora And podľa vyššie uvedenej tabuľky dostaneme:

Tie. 8. Prečo sme to urobili? Urobili sme to, aby sme skontrolovali, či je nastavený štvrtý bit čísla A? Po prijatí B sme overili, že tento bit je nastavený.

Alebo operátor

Používa sa na vykonanie logického sčítania dvoch výrazov.

Syntax:

výsledok = výraz1 Alebo výraz2

výsledok požadovaný; Akákoľvek numerická (vrátane booleovskej) premennej
výraz1 Nevyhnutne; Akýkoľvek výraz
výraz2 Nevyhnutne; Akýkoľvek výraz

Poznámky:

Nasledujúca tabuľka ukazuje, ako funguje operátor Or:

Ak výraz1 =

a výraz2 =

Potom výsledok =

Pravda Pravda Pravda
Pravda Nepravdivé Pravda
Pravda Nulový Pravda
Nepravdivé Pravda Pravda
Nepravdivé Nepravdivé Nepravdivé
Nepravdivé Nulový Nulový
Nulový Pravda Pravda
Nulový Nepravdivé Nulový
Nulový Nulový Nulový

Operátor Or sa používa na nastavenie konkrétnych bitov čísla. Pre bity funguje operátor Or nasledovne (pri pohľade zľava doprava)

0 0 0
0 1 1
1 0 1
1 1 1

Výsledok je vyznačený tučným písmom.

Príklady:

Dim A, B, C, D, MyCheck
MyCheck = A > B alebo B > C " Vráti sa Pravda.
MyCheck = B > A alebo B > C " Vráti sa Pravda.
MyCheck = A > B alebo B > D " Vráti sa Pravda.
MyCheck = B > D alebo B > A " Vráti sa Nulový.
MyCheck=A alebo 5" Vráti sa 15:

Pozrime sa na posledný príklad podrobnejšie. Číslo 10 je znázornené ako bity nasledovne (ako tetráda, t.j. 4 bity):

A číslo 5:

V dôsledku fungovania operátora Or podľa vyššie uvedenej tabuľky dostaneme:

Tie. 15. Ako vidíte, operátor Or je veľmi jednoduchý a pohodlný na použitie nielen v porovnávacích výrazoch, ale aj na nastavenie určitých bitov čísla.

Operátor Xor

Používa sa na vykonanie logickej negácie dvoch výrazov.

Syntax:

výsledok = výraz1 Xor výraz2

výsledok požadovaný; Akákoľvek numerická (vrátane booleovskej) premennej
výraz1 Nevyhnutne; Akýkoľvek výraz
výraz2 Nevyhnutne; Akýkoľvek výraz

Poznámky:

Nasledujúca tabuľka ukazuje, ako funguje operátor Xor:

Operátor Xor sa používa na invertovanie určitých bitov čísla. Pre bity funguje operátor Xor nasledovne (pri pohľade zľava doprava)

0 0 0
0 1 1
1 0 1
1 1 0

Výsledok je vyznačený tučným písmom. Xor sa od Or líši len tým, že keď sú obidva bity jedničky, Xor produkuje 0. Zaujímavou vlastnosťou operátora Xor je, že pri použití dvakrát produkuje rovnaké číslo. Toto sa často používa v kryptografii.

Príklady:

Dim A, B, C, D, MyCheck
A = 10: B = 8: C = 6: D = Null
MyCheck = A > B X alebo B > C " Vráti sa Nepravdivé.
MyCheck = B > A Xor B > C " Vráti sa Pravda.
MyCheck = B > A Xor C > B " Vráti sa Nepravdivé.
MyCheck = B > D Xalebo A > B " Vráti sa Nulový.
MyCheck = A Xor B " Vráti sa 2

Zaujímavým príkladom použitia operátora Xor je výmena hodnôt dvoch číselných premenných:

Dim a As Long, b As Long
a = 4
b = 7
a = a Xor b
b = a X alebo b
a = a Xor b

Teraz premenná a obsahuje hodnotu premennej b a naopak.

Nie operátor

Používa sa na vykonanie logickej inverzie dvoch výrazov.

Syntax:

výsledok= Nie výraz

výsledok požadovaný; Akákoľvek numerická (vrátane booleovskej) premennej
výraz Nevyhnutne; Akýkoľvek výraz

Poznámky:

Nasledujúca tabuľka ukazuje, ako funguje operátor Not:

Operátor Not invertuje všetky bity výrazov. Pre bity funguje operátor Not nasledovne (pri pohľade zľava doprava):

0 1
1 0

Výsledok je vyznačený tučným písmom.

Príklady:

Dim A, B, C, D, MyCheck
A = 10: B = 8: C = 6: D = Null
MyCheck = Nie (A > B) " Vráti sa Nepravdivé.
MyCheck = Nie (B > A)" Vráti sa Pravda.
MyCheck = Nie (C > D) " Vráti sa Nulový.
MyCheck = Not A " Vráti sa-11 (všetky bity sú invertované)

Pozrime sa bližšie na posledný príklad. Číslo 10 je reprezentované nasledujúcimi bitmi (ako bajt, t.j. 8 bitov):

Po invertovaní všetkých bitov dostaneme:

A toto je -11.

operátor Eqv

Používa sa na vykonanie logickej ekvivalencie medzi dvoma výrazmi.

Syntax:

výsledok = výraz1 Eqv výraz2

výsledok požadovaný; Akákoľvek numerická (vrátane booleovskej) premennej
výraz1 Nevyhnutne; Akýkoľvek výraz
výraz2 Nevyhnutne; Akýkoľvek výraz

Poznámky:

Nasledujúca tabuľka ukazuje, ako funguje operátor Eqv:

Pre bity funguje operátor Eqv nasledovne (pri pohľade zľava doprava)

0 0 1
0 1 0
1 0 0
1 1 1

Príklady:

Dim A, B, C, D, MyCheck
A = 10: B = 8: C = 6: D = Null
MyCheck = A > B Eqv B > C " Vráti sa Pravda.
MyCheck = B > A Eqv B > C " Vráti sa Nepravdivé.
MyCheck = A > B Eqv B > D " Vráti sa Nulový.
MyCheck = A Eqv B " Vráti sa -3

Operátor Imp

Používa sa na vykonanie logickej implikácie dvoch výrazov.

Syntax:

výsledok = výraz1 Imp výraz2

výsledok požadovaný; Akákoľvek numerická (vrátane booleovskej) premennej
výraz1 Nevyhnutne; Akýkoľvek výraz
výraz2 Nevyhnutne; Akýkoľvek výraz

Poznámky:

Nasledujúca tabuľka ukazuje, ako funguje operátor Imp:

Ak výraz1 =

a výraz2 =

Potom výsledok =

Pravda Pravda Pravda
Pravda Nepravdivé Nepravdivé
Pravda Nulový Nulový
Nepravdivé Pravda Pravda
Nepravdivé Nepravdivé Pravda
Nepravdivé Nulový Pravda
Nulový Pravda Pravda
Nulový Nepravdivé Nulový
Nulový Nulový Nulový

Pre bity funguje operátor Imp nasledovne (pri pohľade zľava doprava)

0 0 1
0 1 1
1 0 0
1 1 1

Príklady:

Dim A, B, C, D, MyCheck
A = 10: B = 8: C = 6: D = Null
MyCheck = A > B Imp B > C " Vráti sa Pravda.
MyCheck = A > B Imp C > B " Vráti sa Nepravdivé.
MyCheck = B > A Imp C > B " Vráti sa Pravda.
MyCheck = B > A Imp C > D " Vráti sa Pravda.
MyCheck = C > D Imp B > A " Vráti sa Nulový.
MyCheck = B Imp A " Návraty -1

Jazykové pokyny (alebo operátori)– sú to programové jednotky, ktoré vykonávajú nejaké akcie alebo popisujú dáta.

Príkaz obsahuje jedno alebo viac kľúčových slov a prípadne parametrov. Niekoľko príkazov nachádzajúcich sa na rovnakom riadku programu je od seba oddelených dvojbodkou. Ak je príkaz príliš dlhý, môžete ho rozdeliť na viacero riadkov pomocou podčiarkovníka _.

O P erátorúlohy

Operátor priradenia sa používa na priradenie novej hodnoty premennej počas vykonávania programu. Znak priradenia "=".

Napríklad, operátor:

x = Sqr(5 + Tan(1,8)^2)

priradí premennej x hodnotu výrazu . Ako výsledok výpočtu výrazu napísaného na pravej strane dostaneme reálne číslo. Hodnota, ktorá bude priradená premennej x, však závisí od toho, ako bol typ tejto premennej deklarovaný. Ak je teda premenná x typu Single, bude jej priradený výsledok 4.834464, ak je to Double, potom 4.83446368725481 a ak je to celé číslo, tak 5.

Typ údajov premennej x musí byť kompatibilný s typom údajov tohto výrazu. Okrem implicitnej konverzie z jedného typu na druhý počas priraďovania poskytuje Visual Basic možnosť konvertovať typy pomocou funkcií. Napríklad funkcia CDbl konvertuje dáta na typ Double, CInt– na typ Integer, Clng- na dlhý typ, CSng– na typ Single, CStr– napísať reťazec atď.

Funkcie CInt a Clng zaokrúhlia výsledok. Navyše, ak je zlomková časť čísla 0,5, zaokrúhľuje sa na najbližšie párne číslo.

Operátor pridelenia umožňuje nielen priradiť hodnotu premennej, ale aj nastaviť hodnoty vlastností objektov VBA. Napríklad operátor

Riadky("1:1").Písmo. Tučné = pravda

Zvýrazní písmo v prvom riadku pracovného hárka.

LINE BREAK

Kombinácia<Пробел> + <Знак подчеркивания>na konci riadku zabezpečuje, že nasledujúci riadok je pokračovaním predchádzajúceho. Zároveň si musíme uvedomiť, že:

§ Konštanty reťazca nemôžete zlomiť obalením

§ Nie je povolených viac ako sedem pokračovaní tej istej línie

§ Samotný riadok nemôže obsahovať viac ako 1024 znakov

Príklad.

Nesprávny prevod Správny prevod

Line = "Visual Basic for _ Line = "Visual Basic" _

Aplikácie" a "pre aplikácie"

KOMENTÁRE

Text nasledujúci za symbolom (") v programe až do konca riadku je kompilátorom ignorovaný a ide o komentár. Komentáre sa používajú na pridávanie vysvetlení a popisov k programu. Komentáre sú užitočné pri ladení programu: umožňujú dočasne vypnúť programové riadky počas ladenia.

Podmienené operátor

Podmienený príkaz vykoná určité inštrukcie (príkazy) v závislosti od hodnoty výrazu podmienky. Bloková schéma na kontrolu stavu vyzerá takto:

Ryža. 1. Rozvetvenie môže byť neúplné (táto štruktúra sa nazýva aj bypass).

Ryža. 2. Podmienený príkaz má dve formy syntaxe: riadkovú a blokovú.

Forma s malými písmenami

Ak stave Potom [ operator_if_true]

Algoritmus uvedený na obr. 1, v tvare malých písmen sa bude písať ako

Ak stave Potom operator_if_true Inak operator_if_false

Obrázok 2 zodpovedá záznamu

Ak stave Potom operator_if_true

Obrázok 3 zodpovedá záznamu

Ak stave Potom Else operator_if_false

Blokový formulár

Ak podmienka-1 Potom

[operator_if podmienka–1_true]

[operator_if_all_conditions_false]]

Podmienky uvedené v častiach If a ElseIf sú relačné výrazy alebo logické výrazy. Keď je splnená jedna z podmienok, vykonajú sa príkazy za príslušným kľúčovým slovom Then a zostávajúce príkazy sa ignorujú (to znamená, že sa nevykonajú žiadne ďalšie testy a kontrola sa prenesie na príkaz nasledujúci za End If). Ak nie je splnená žiadna z logických podmienok, potom operator_if_all_previous_conditions_false, alebo, ak je táto časť vynechaná, riadenie sa prenesie na riadok programu nasledujúci za podmieneným príkazom.

Bloková forma príkazu If je vhodnejšia, ak:

Keď je podmienka splnená alebo nie je splnená, vykoná sa niekoľko príkazov (v tomto prípade možno použiť aj riadkový formulár, ale riadok bude príliš dlhý a program menej prehľadný);

Postupne sa kontroluje niekoľko podmienok a keď je splnená ďalšia podmienka, je nevhodné kontrolovať nasledujúce podmienky (preto sa používa kľúčové slovo ElseIf).

Príklad

Spoločnosť poskytuje veľkoobchodným odberateľom zľavy.

Na základe známeho objemu objednávky je potrebné určiť jej cenu.

Na výpočet ceny objednávky používame funkciu:

Verejná funkcia Order_Cost (množstvo ako dlhé) ako dvojnásobok

Ak Množstvo<= 999 Then

Objednávka_cena = množstvo * 5

Iné množstvo<= 1999 Then

Objednávka_cena = množstvo * 4.8

Objednávka_cost = množstvo * 4,75

V tomto prípade bolo možné použiť malý tvar operátora IF:

Verejná funkcia Order_Cost1 (množstvo ako dlhé) ako dvojnásobok

Ak Množstvo<= 999 Then Стоимость_заказа1 = Количество * 5

Ak Množstvo >= 1000 a Množstvo<= 1999 Then Стоимость_­ заказа1 = Количество * 4.8

Ak Množstvo >= 2000, potom Objednávka_Cena1 = Množstvo * 4,75

Ak nezohľadníme nevýhody, že rady sú dlhé a pri akomkoľvek objeme objednávky sa všetky kontroly vykonávajú postupne (prvá procedúra funguje rýchlejšie pri malých objemoch objednávok), potom je program napísaný správne a možno ešte prehľadnejší.

Je však možné uviesť príklady, kedy ak je splnená (alebo nesplnená) jedna z podmienok, ostatné jednoducho nemožno skontrolovať.

Napríklad, niektoré operátory sa musia vykonať, keď sú podmienky splnené spoločne: http://po-teme.com.ua/images/adIIIin/image014_e652e49476c6f0eb9cf40b68cc090828.gif" alt="" width="56" height="27 src="> Ak pre kontroly použite operátor

Ak x>0 a y

ak je x záporné, pri volaní funkcie sqr sa vyskytne chyba (koreň je záporné číslo).

Tejto chybe sa dá vyhnúť použitím dizajnu

Ak x > 0 Potom Ak y< Sqr(x) Then

Ak v poslednej forme záznamu existuje kľúčové slovo Else, potom sa vzťahuje na posledný príkaz If.

Operátor výberu

Vyberte položku Prípad výraz

[inštrukcie_inak]]

Parameter výrazu je ľubovoľný číselný alebo reťazcový výraz. Namiesto vyhodnotenia logickej podmienky sa hodnota výrazu porovnáva s každou z hodnôt špecifikovaných parametrom zoznam_výrazov-n.

Hodnoty na porovnanie zahrnuté v zoznam_výrazov-n, možno špecifikovať v tvare:

– hodnoty;

– rozsah hodnôt vo formulári pôvodná hodnota Komu konečná_hodnota;

– porovnávacie výrazy v tvare Is hodnotu operátora porovnávania;

– zoznam ktoréhokoľvek z uvedených typov výrazov (oddeľovač – čiarka).

Inštrukcia môže obsahovať ľubovoľný počet blokov Case. Ak nie je splnená žiadna z podmienok, vykonajú sa príkazy v bloku Case Else.

Napríklad, ak je podmienka skóre nad tri, potom túto podmienku možno zapísať: Prípad 4, 5 alebo Prípad je >3 alebo Prípad >= 4 alebo Prípad 4 až 5.

Poznámka. Nemusíte zadávať kľúčové slovo Is, pridá sa automaticky.

Príklad

Uvedený príklad so zvýhodnenou cenou s použitím konštrukcie Select Case je možné riešiť nasledovne:

Verejná funkcia Order_Cost2 (množstvo ako dlhé) ako dvojnásobok

Vyberte Množstvo prípadu

Objednávka_cost2 = Množstvo * 5

Prípad 1000 až 1999

Objednávka_cost2 = Množstvo * 4.8

Prípad je >= 2000

Objednávka_cost2 = množstvo * 4,75

Typicky sa porovnávacie operácie používajú v slučkových operátoroch, aby urobili určité rozhodnutie o ďalšom priebehu operácií.

Výsledkom akejkoľvek porovnávacej operácie je boolovská hodnota: True, False.

Ak oba operandy v porovnávacom výraze majú rovnaký typ údajov, VBA vykoná jednoduché porovnanie pre tento typ.

Ak oba operandy v porovnávacom výraze majú špecifické typy a 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.

Porovnanie reťazcov

Pri porovnávaní reťazcov s relačnými operátormi VBA porovnáva každý reťazec zľava doprava znak po znaku.

Vo VBA sa jeden reťazec rovná druhému iba vtedy, keď oba reťazce obsahujú presne rovnaké znaky v presne rovnakom poradí a oba reťazce majú rovnakú dĺžku. Napríklad reťazce "abcd" "abcd" "abcd" sa navzájom nerovnajú, pretože VBA pri porovnávaní reťazcov neignoruje úvodné ani koncové medzery.

Pri porovnávaní reťazcov s premenlivou dĺžkou by ste mali byť opatrní.

Porovnanie binárnych a textových reťazcov

Na ukladanie textu počítač používa schému, v ktorej má každý zobrazený znak jedinečné číslo. Všetky písmená abecedy majú svoje jedinečné čísla. Veľké písmená majú zvyčajne nižšie čísla ako malé písmená. Zavolá sa číslo zodpovedajúce konkrétnemu písmenu alebo symbolu znakový kód.

Pri vykonávaní binárneho porovnania informácií o reťazci používa VBA binárny ekvivalent čísla pre každý znak. Táto porovnávacia metóda sa nazýva binárne alebo binárne a je predvolenou porovnávacou metódou.

Pretože veľké písmená majú nižšie binárne čísla, veľké písmená sú zoradené podľa abecedy pred malými písmenami. Preto počas binárneho porovnávania reťazcov bude reťazec "ABV" menší ako reťazec "abc".


Pri textovom porovnávaní reťazcov VBA nepoužíva binárny ekvivalent znakov a „nerozlišuje“ veľké a malé písmená. Pri porovnaní textu sa reťazec „abc“ rovná reťazcu „ABC“.

Ak chcete vybrať metódu porovnávania reťazcov, použite direktívu Option Compare


Možnosť Porovnať


Táto smernica musí byť v oblasti deklarácie modulu.

Reťazenie reťazcov

Pripojenie jedného reťazca k druhému sa nazýva zreťazenie reťazcov.

Spájanie reťazcov sa bežne používa na vytváranie reťazcov z rôznych zdrojov v procedúre na vytvorenie správy na zobrazenie. VBA má dva operátory na zreťazenie reťazcov.

Operátor zreťazenia (&)

Operátor (&) vo VBA sa používa iba na zreťazenie reťazcov.

Syntax


Operand_1 & Operand_2 [& Operand_3..]


Operand_N je akýkoľvek platný reťazec alebo číselný výraz (ktorý sa konvertuje na reťazec).

Typ údajov výsledku zreťazenia reťazcov je String.

Ak je operand vo výraze zreťazenia reťazcov prázdny alebo Null, VBA interpretuje tento operand ako reťazec s nulovou dĺžkou (reťazec, ktorý neobsahuje žiadne znaky).

Poznámka! Symbol (&) operácie zreťazenia musí byť oddelený medzerou od názvu premennej, pretože V opačnom prípade môže VBA interpretovať znak ako dlhý znak definície typu.

Operátor sčítania v zreťazení reťazcov

Na zreťazenie reťazcov môžete použiť aj operátor (+).

Tento operátor má rovnakú syntax a požiadavky ako operátor (&). Pochopte však, že vo VBA je hlavným účelom operátora (+) aritmetické sčítanie. Preto, aby sa predišlo nejednoznačnosti pri čítaní programového kódu, dôrazne sa odporúča použiť na zreťazenie reťazcov operátor (&).

Operačné priority

Mnohé výrazy v programovom kóde sú zložité (zložené), t.j. pozostávajú z dvoch alebo viacerých výrazov.

VBA sa pri vyhodnocovaní zložitých výrazov riadi týmito pravidlami:

  • Časti výrazu v zátvorkách sa vždy vyhodnocujú ako prvé;
  • Špecifické operácie sa vykonávajú v závislosti od hierarchie operátora (tabuľka nižšie);
  • Ak je hierarchia operátorov rovnaká, vyhodnocujú sa zľava doprava.
Operátor