Amikor VBA-kódot ír az Excelben, minden lépésben beépített operátorokat használunk. Ezeket az operátorokat matematikai, karakterlánc, összehasonlító és logikai operátorokra osztják. Ezután részletesen megvizsgáljuk az egyes operátorcsoportokat.

Matematikai operátorok

A fő VBA matematikai operátorok az alábbi táblázatban találhatók.

A táblázat jobb oldali oszlopában zárójelek hiányában látható az alapértelmezett operátori prioritás. Ha egy kifejezéshez zárójeleket ad, tetszés szerint módosíthatja a VBA utasítások végrehajtási sorrendjét.

String operátorok

Az Excel VBA alapvető karakterlánc-operátora az összefűzési operátor & (összeolvad):

Összehasonlító operátorok

Az összehasonlító operátorok két szám vagy karakterlánc összehasonlítására és visszaadására szolgálnak logikai érték típus Boolean(Igaz vagy hamis). A fő Excel VBA összehasonlító operátorok listája ebben a táblázatban található:

Logikai operátorok

A logikai operátorok, az összehasonlító operátorokhoz hasonlóan, egy típusú logikai értéket adnak vissza Boolean(Igaz vagy hamis). Fő logikai operátorok Az Excel VBA listája az alábbi táblázatban található:

A fenti táblázat nem sorolja fel a VBA-ban elérhető összes logikai operátort. Teljes lista logikai operátorok a Visual Basic Developer Center webhelyén találhatók.

Beépített funkciók

A VBA-ban számos beépített funkció érhető el, amelyek kódíráskor használhatók. Az alábbiakban felsorolunk néhányat a leggyakrabban használtak közül:

Funkció Akció
abs A megadott szám abszolút értékét adja vissza.
  • Hasizület (-20) 20 értéket ad vissza;
  • hasizom (20) 20 értéket ad vissza.
Chr A paraméter számértékének megfelelő ANSI karaktert adja vissza.
  • Chr(10) sortörést ad vissza;
  • Chr(97) karaktert ad vissza a.
Dátum Az aktuális rendszerdátumot adja vissza.
Hozzáadás dátuma Adott időintervallumot ad az adott dátumhoz. Függvény szintaxis:

Hozzáadás dátuma( intervallum , szám , dátum )

Hol az érvelés intervallum meghatározza az adotthoz hozzáadott időintervallum típusát dátum az érvelésben meghatározott összegben szám .

Érv intervallum a következő értékek egyikét veheti fel:

  • Hozzáadás dátuma("d", 32, "2015.01.01.") 32 napot ad a 2015.01.01. dátumhoz, így a 2015.02.02. dátumot adja vissza.
  • Hozzáadás dátuma("ww", 36, "2015.01.01.") 36 hetet ad a 2015. 01. 01-i dátumhoz, és a 2015. 09. 09. dátumot adja vissza.
DateDiff Kiszámítja a megadott időintervallumok számát két adott dátum között.
  • DateDiff("d", "01/01/2015", "02/02/2015") kiszámolja a 2015.01.01. és 2015.02.02. közötti napok számát, 32-t ad vissza.
  • DateDiff("ww", "01/01/2015", "03/03/2016") kiszámolja a 2015.01.01. és 2016.03.03. közötti hetek számát, 61-et ad vissza.
nap A hónap napjának megfelelő egész számot ad vissza az adott dátumban.

Példa: nap („2015.01.29.”) a 29-es számot adja vissza.

Óra Az adott időpontban töltött órák számának megfelelő egész számot ad vissza.

Példa: Óra ("22:45:00") visszaadja a 22-es számot.

InStr Egy egész számot és két karakterláncot vesz fel argumentumként. A második karakterlánc előfordulási helyét adja vissza az elsőben, a keresést az egész szám által megadott pozíciótól kezdve.
  • InStr(1, "Itt a keresett szó", "szó") visszaadja a 13-as számot.
  • InStr(14, "Itt a keresett szó, és itt van egy másik keresőszó", "szó") a 38-as számot adja vissza.

Jegyzet: A szám argumentum nem adható meg, ebben az esetben a keresés a függvény második argumentumában megadott karakterlánc első karakterétől indul.

int A megadott szám egész részét adja vissza.

Példa: Int(5,79) 5-ös eredményt ad vissza.

Isdate visszatér Igaz ha a megadott érték dátum, ill Hamis– ha a dátum nem.
  • IsDate (“2015.01.01.”) visszatér Igaz;
  • IsDate(100) visszatér Hamis.
IsError visszatér Igaz ha a megadott érték hiba, ill Hamis– ha nem hiba.
Hiányzik Egy opcionális eljárásargumentum neve argumentumként kerül átadásra a függvénynek. Hiányzik visszatér Igaz ha nem adtak át értéket a kérdéses eljárási argumentumhoz.
IsNumeric visszatér Igaz ha a megadott érték számként kezelhető, ellenkező esetben visszaadja Hamis.
Bal A megadott számú karaktert adja vissza az adott karakterlánc elejétől. A függvény szintaxisa a következő:

Bal( vonal , hossz )

ahol vonal- ez eredeti húr, a hossz a visszaadandó karakterek száma, a karakterlánc elejétől számítva.

  • Bal("abvgDeZicleMn", 4) az "abcg" karakterláncot adja vissza;
  • Bal("abvgDeZicleMn", 1) az "a" karakterláncot adja vissza.
Len Egy karakterláncban lévő karakterek számát adja vissza.

Példa: Len("abcdej") visszaadja a 7-es számot.

hónap A megadott dátum hónapjának megfelelő egész számot ad vissza.

Példa: Hónap („2015.01.29.”) az 1 értéket adja vissza.

Középső A megadott számú karaktert adja vissza az adott karakterlánc közepétől. Függvény szintaxis:

Középső( vonal , Rajt , hossz )

ahol vonal az eredeti karakterlánc Rajt- a kinyerendő karakterlánc elejének pozíciója, hossz a kinyerendő karakterek száma.

  • Mid("abvgDeZicleMn", 4, 5) a "hol" karakterláncot adja vissza;
  • Mid("abvgDeZicleMn", 10, 2) a "cl" karakterláncot adja vissza.
Perc Az adott idő perceinek megfelelő egész számot ad vissza. Példa: Perc("22:45:15") 45 értéket ad vissza.
Most Az aktuális rendszerdátumot és -időt adja vissza.
Jobb A megadott számú karaktert adja vissza az adott karakterlánc végétől. Függvény szintaxis:

Jobb( vonal , hossz )

Ahol vonal az eredeti karakterlánc, és hossz a kivonandó karakterek száma, az adott karakterlánc végétől számítva.

  • Jobb ("abvgDeZicleMn", 4) a "clmn" karakterláncot adja vissza;
  • Jobb ("abvgDeZicleMn", 1) az "n" karakterláncot adja vissza.
Második A megadott idő másodperceinek megfelelő egész számot ad vissza.

Példa: Második („22:45:15”) 15 értéket ad vissza.

sqr Az argumentumban átadott numerikus érték négyzetgyökét adja vissza.
  • négyzet (4) visszatér 2;
  • Négyzet (16) a 4-es értéket adja vissza.
Idő Az aktuális rendszeridőt adja vissza.
Ubound A megadott tömbdimenzió felső indexét adja vissza.

Jegyzet: Mert többdimenziós tömbök opcionális argumentumként megadhatja, hogy melyik dimenzióindexet adja vissza. Ha nincs megadva, az alapértelmezett érték 1.

Hozzárendelési operátor (=)

A hozzárendelési operátor egy kifejezés eredményének változóhoz való hozzárendelésére szolgál.

A hozzárendelés operátorának két szintaktikai formája van:

varname = kifejezés

varname- bármely VBA változó

kifejezés- bármilyen VBA kifejezés

Hozzárendelési utasítás végrehajtásakor a VBA először kiértékeli a hozzárendelési utasítástól jobbra lévő kifejezést, majd a kifejezés eredményét abban a változóban tárolja, amelynek neve az egyenlőségjeltől balra található.

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

A kezdő felhasználók néha nem értik az utolsó hozzárendelési művelet jelentését, amikor a művelet bal és jobb része is ugyanazt a változót tartalmazza. Ebben az esetben először a hozzárendelési operátor jobb oldalán lévő kifejezés kiértékelésének eredménye kerül a köztes memóriacellába, majd ezt az eredményt a bal oldali változóhoz rendeljük.

Például, ha az A = A +5 hozzárendelési utasításban a hozzárendelési művelet előtti A változó 7 értéket tartalmazott, akkor a művelet után a 12 (7+5) értéket fogja tartalmazni.

Nem szabad elfelejteni:

· Bármilyen numerikus változót (vagy kifejezést) hozzárendelhet bármely más numerikus típusú változóhoz (vagy Variant típusú változóhoz);

· Ha numerikus kifejezést rendel egy beírt változóhoz kisebb pontossággal (például Double - Long), a VBA kerekíti a kifejezés értékét, hogy megfeleljen az új értéket felvevő változó pontosságának;

Ha egy változó String típusú kijelölt típusú változó A számot tartalmazó változat esetén a VBA automatikusan karakterláncsá alakítja ezt a számot.

Operátor hozzáadása (+)

Az összeadás operátor egyszerű összeadást hajt végre. Mindkét operandusnak numerikus kifejezésnek vagy karakterláncnak kell lennie, amelyeket a VBA számmá tud konvertálni. Az összeadás operátor használható számtani műveletek végrehajtására is a dátum adatokkal.

Az összeadási kifejezés eredményének adattípusa általában megegyezik a kifejezés legpontosabb típusával. De vannak kivételek:

· A Single és Long típusok hozzáadásának eredménye Dupla lesz;

· A Dátum típus bármely más adattípushoz való hozzáadásának eredménye mindig Dátum lesz;

· Ha az eredmény meghaladja az Integer típusú tartományt, akkor a VBA Long-ra konvertálja;

· Ha az eredmény meghaladja a Long, Single, Date típusokat, akkor a VBA kettősre konvertálja;

· Ha az összeadási kifejezés bármely operandusa Null, akkor az összeadási kifejezés eredménye is Null.

Idézzük fel a numerikus adattípusok pontosságának növelésének sorrendjét: Byte, Integer, Long, Single, Double, Currency.

Azt kell mondani, hogy világosan meg kell érteni, hogy a VBA hogyan alakítja át az adattípusokat az aritmetikai műveletek eredményeként. Ez segít a jövőben elkerülni sok "felesleges" hibát a kódírás során.

Kivonás operátor (-)

A kivonás operátor két dolgot csinál: egy szám kivonására szolgál a másikból; egy unáris mínuszjelet jelöl (ez az a mínuszjel, amely egy szám elé kerül, jelezve, hogy az negatív szám). Ha egy változó vagy kifejezés elé egy unáris mínuszt teszünk, az ugyanaz, mintha ezt a számot megszoroznánk -1-gyel.

A kivonási kifejezésben szereplő mindkét operandusnak numerikus változónak (kifejezésnek) vagy karakterlánc-kifejezésnek kell lennie, amelyeket a VBA számmá tud konvertálni. Használhatja a kivonás operátort a dátumok kezelésére.

A VBA ugyanazokat a szabályokat használja a kivonási kifejezés eredményének adattípusának meghatározására, mint az összeadás operátort használó kifejezéseknél. De van egy kiegészítés:

· Ha egy kifejezésben mindkét operandus Date típusú, akkor a kifejezés eredménye Double típusú lesz.

Szorzási operátor (*)

A szorzási operátor két számot megszoroz - a szorzási kifejezés eredménye a két operandus szorzata. A szorzási kifejezésben szereplő mindkét operandusnak numerikus kifejezésnek vagy karakterláncnak kell lennie, amelyeket a VBA számmá tud konvertálni.

A VBA ugyanazokat a szabályokat követi a szorzási kifejezés eredményének adattípusának meghatározására, mint az összeadás operátort használó kifejezésekre. A szorzási kifejezésekben az összes dátumértéket tartalmazó Variant változót számértékekké alakítja a rendszer.

Osztálykezelő (/)

A lebegőpontos osztás operátora az operandusok szokásos aritmetikai osztását hajtja végre.

Az osztási kifejezésekben az első operandust elosztjuk a második operandusszal - az osztás eredménye a hányados.

A lebegőpontos osztási kifejezésben mindkét operandusnak numerikus kifejezésnek vagy karakterláncnak kell lennie, amelyet a VBA számmá tud konvertálni.

Ha az osztáskifejezésben legalább egy operandus Null típusú, akkor az osztás eredménye is Null lesz.

A lebegőpontos osztási művelet adattípusa Dupla, kivéve:

Az osztáskifejezés mindkét operandusa Integer vagy Single típusú – az Single eredménye;

Ha a kifejezés eredménye nem túllépi a Single típus értéktartományát.

Egész osztás (\)

Az egész osztás abban különbözik a lebegőpontos osztástól, hogy az eredménye mindig egy egész szám, törtrész nélkül.

Az egész osztásos kifejezésben szereplő mindkét operandusnak numerikus kifejezésnek vagy karakterláncnak kell lennie, amelyeket a VBA számmá tud konvertálni.

Az egész osztási művelet végrehajtása előtt a VBA minden operandust egy egész számra vagy hosszú típusúra kerekít (ugyanaz a típus, mint az egész osztás eredménye).

A VBA elveti (de nem kerekít!) egy egész osztási kifejezés eredményének tört maradékát. Például a 22\5 és 24\5 kifejezések eredménye ugyanaz = 4.

Ha egy egész osztás kifejezésben legalább egy operandus Null típusú, akkor az osztás eredménye is Null.

Modulo Division (Mod)

A modulo osztás mintegy kiegészíti az egész osztást. Modulo osztásnál a kifejezés csak az osztási művelet maradékát adja vissza egész számként.

22 5. mód = 2

24 5. mód = 4

25 5. mód = 0

A modulo osztás többi tulajdonsága megegyezik az egész osztáséval.

Hatványozás (^)

A hatványozás operátora egy számot hatványra emel.

5 ^ 3 =125

A hatványozási kifejezés mindkét operátorának numerikus kifejezésnek vagy karakterláncnak kell lennie, amelyeket a VBA számokká alakíthat.

A hatványozási operátortól balra lévő operandus csak akkor lehet negatív szám, ha a jobb oldali operandus egész szám.

A kifejezés eredménye Double típusú.

Ha a kifejezésben legalább egy operandus Null típusú, akkor a hatványozás eredménye is Null lesz.

Foglaljuk össze a fentieket:

VBA LOGIKAI KEZELŐK

A logikai operátor operandusaként bármilyen érvényes kifejezést használhat, amely logikai eredménnyel rendelkezik, valamint olyan számot, amely logikai értékké konvertálható.

Egy logikai művelet eredménye egy logikai típusú érték (vagy Null, ha legalább az egyik operandus Null).

Logikai operátor ÉS

SZINTAXIS:

Operandus_1 ÉS Operandus_2

Az ÉS operátor végrehajtja logikai kötőszó.

A művelet eredménye csak akkor igaz, ha mindkét operandus igaz, egyébként pedig hamis.

igazságtáblázat

Az ÉS operátor több operandushoz is használható:

(5<7) AND (4>3) ÉS (5=6) eredmény hamis lesz

Az operandusok számától függetlenül a logikai eredménye ÉS műveletek csak akkor lesz igaz, ha a kifejezés minden operandusa True-ra értékelődik. Minden más esetben az eredmény hamis lesz. Vegye figyelembe, hogy az operandusok zárójelben vannak. A VBA először kiértékeli az egyes operandusok értékét a zárójelben, majd a teljes kifejezést.

Logikai operátor VAGY

SZINTAXIS:

Operandus_1 VAGY Operandus_2

A VAGY operátor végrehajtja logikai diszjunkció.

A művelet eredménye igaz, ha legalább az egyik operandus igaz, egyébként pedig hamis.

igazságtáblázat

Az OR operátor több operandushoz is használható:

(5<7) OR (4>3) VAGY (5=6) eredmény igaz lesz

Az operandusok számától függetlenül a logikai VAGY művelet eredménye mindig igaz lesz, ha a kifejezés legalább egyik operandusa igazra értékeli. Ellenkező esetben az eredmény hamis lesz.

Az ÉS és VAGY operátorok kombinálhatók:

((5<7) AND (4>3)) VAGY (5=6) eredmény igaz lesz

Logikai operátor NEM

SZINTAXIS:

NEM operandus

NEM kezelő végez logikai tagadás.

A NOT operátor csak egy operandust használ.

igazságtáblázat

Az ÉS VAGY NEM operátorok kombinálhatók:

((5<7) AND (4>3)) VAGY NEM (5=6) eredmény igaz lesz

XOR logikai operátor

SZINTAXIS:

Operandus_1 XOR Operandus_2

Az XOR operátor végrehajtja logikai kivétel.

A művelet eredménye igaz, ha az operandusok rendelkeznek különböző jelentések, egyébként - Hamis.

igazságtáblázat

((5<7) AND (4>3)) VAGY NEM (5=6) XOR (5=5) eredmény hamis

Logikai operátor EQV

SZINTAXIS:

Operandus_1 EQV Operandus_2

Az EQV operátor az operátor logikai egyenértékűség.

Ennek a műveletnek az eredménye igaz, ha az operandusok értéke megegyezik, ellenkező esetben False.

igazságtáblázat

((5<7) AND (4>3)) VAGY NEM (5=6) Az EQV (5=5) True-t eredményez.

Összehasonlító operátorok

Általában az összehasonlító műveleteket ciklusos utasításokban használjuk, hogy döntést hozzunk a műveletek további menetéről.

Minden összehasonlítási művelet eredménye egy logikai érték: igaz, hamis.

Ha egy összehasonlítási kifejezésben mindkét operandus azonos adattípusú, a VBA egyszerű összehasonlítást hajt végre ezen a típuson.

Ha egy összehasonlító kifejezésben mindkét operandusnak van meghatározott típusa, és ezek a típusok nem kompatibilisek, a VBA típushibát ad ki.

Ha az összehasonlítási kifejezésben az egyik vagy mindkét operandus Variant típusú változó, a VBA megpróbálja átalakítani a Variant típust valamilyen kompatibilis típusra.

VBA operátorok: aritmetika, logikai, összehasonlítások, hozzárendelések

Operátor a VBA kód legkisebb egysége, amely futhat. Egy utasítás deklarálhat vagy definiálhat egy változót, beállíthat egy VBA-fordító beállítást, vagy végrehajthat valamilyen műveletet egy programban.

A VBA-ban csak 7 aritmetikai operátor van. Négy szabványos: összeadás (+), kivonás (-), szorzás (*), osztás (/) és további három:

  • hatványozás (^), például 2^3 = 8 ;
  • egész osztás (\). Az első számot elosztja a másodikkal, eldobja (nem kerekít) törtrész. Például, 5\2 = 2 ;
  • modulo divízió (Mod). Az első számot elosztja a másodikkal, és csak az osztás maradékát adja vissza. Például, 5 2. mód = 1.

A hozzárendelés operátora a VBA-ban az egyenlőségjel. Ezt így lehet írni:

Legyen nVar = 10

vagy még egyszerűbben:

nvar = 10

A második esetben ne keverje össze az egyenlőségjelet az egyenlőség operátorral.

Kifejezés

nvar = 10

azt jelenti, hogy "az nVar változót állítsa 10-re", és ha a sor így néz ki:

Ha (nVar = 10)

ez azt jelenti, hogy "ha az nVar változó értéke 10".

Ha objektumot kell hozzárendelnie egy változóhoz, akkor ez más módon történik.

Csak 8 összehasonlító operátor van a VBA-ban:

  • egyenlőség (=), például Ha (nVar = 10);
  • nagyobb és kisebb, mint (> és<), например, Ha (nVar > 10);
  • nagyobb vagy egyenlő és kisebb vagy egyenlő, mint (>= és<=), например, Ha (nVar >= 10);
  • nem egyenlő (<>), például, If(nVar<>10) ;
  • tárgyak összehasonlítása (Is). Meghatározza, hogy az objektumváltozók ugyanarra az objektumra vonatkozzanak-e vagy különbözőekre, pl. If(obj1 az obj2);
  • hasonlóság (Tetszik). Összehasonlít egy karakterlánc objektumot egy mintával, és meghatározza, hogy a minta egyezik-e.

Az összehasonlító operátorok mindig igaz vagy hamis értéket adnak vissza – igaz, ha az állítás igaz, és hamis, ha hamis.

Egy kicsit a karakterláncértékek összehasonlításáról:

  • karakterláncértékek összehasonlításakor a kis- és nagybetűk érzékenyek;
  • a karakterlánc értékek szóközeit is figyelembe veszik;
  • összehasonlításkor szöveges karakterláncok a több/kevesebb alapértelmezés szerint egyszerűen összehasonlítható bináris kódok karakterek – mi több vagy kevesebb. Ha az ábécé sorrendjét kell használnia, használhatja a parancsot

Lehetőség Szöveg összehasonlítása

Egy kicsit bővebben a Like operátorról. Az általános szintaxisa így néz ki

Kifejezés1 Mint a Kifejezés2

Ebben az esetben a Kifejezés1 bármely VBA szövegkifejezés, a Kifejezés2 pedig a Like operátornak átadott sablon. Ebben a mintában speciális helyettesítő karaktereket használhat (lásd a 3.1. táblázatot).

Tab. 3.1 Helyettesítő karakterek a LIKE operátorhoz

Nagyon gyakran több feltétel tesztelésekor logikai operátorokat használnak:

  • ÉS - logikai ÉS, mindkét feltételnek igaznak kell lennie;
  • VAGY - logikai VAGY, legalább egy feltételnek igaznak kell lennie;
  • NOT – logikai negáció, IGAZ értéket ad vissza, ha a feltétel hamis;
  • Az XOR logikus kivétel. Egy E1 XOR kifejezésben az E2 IGAZ értéket ad vissza, ha csak E1 = IGAZ vagy csak E2 = IGAZ, ellenkező esetben HAMIS;
  • EQV - két kifejezés ekvivalenciája, IGAZ értéket ad vissza, ha azonos értékkel rendelkeznek;
  • IMP – implikáció, FALSE értéket ad vissza, ha E1 = IGAZ és E2 = HAMIS, egyébként IGAZ.

Ne feledje, hogy az ÉS, VAGY, NEM, más logikai operátorokat ritkán használnak.

Szinte minden VBA program használ összefűzési operátorokat. VBA-ban kettő van belőlük - + vagy &. Mindig ajánlott használni, mert:

  • a & használatakor a számértékek karakterláncokká történő automatikus konvertálása történik - nem áll fenn a hiba veszélye;
  • a + operátor használatakor egy karakterlánc érték hozzáadása Null típusú értékhez nullát eredményez.

MsgBox "Üzenet a felhasználónak" & vUserName

Az operátorok alkalmazásának sorrendje zárójelekkel szabályozható.

Nézzük meg közelebbről, hogy a VBA hogyan hajtja végre az olyan számtani műveleteket, mint az összeadás, kivonás, szorzás, osztás és hatványozás, valamint olyan speciális műveleteket, mint az egész számok osztása és a modulo. Az alábbi táblázat az aritmetikai VBA-kifejezések írásakor használt műveleti jeleket mutatja be.

A kifejezés olyan érték vagy értékcsoport, amely egyetlen értéket fejez ki. Egy kifejezés eredménye egy adott adattípus egyetlen értéke. A műveletek jelei (megjelölései) a kifejezések bizonyos értékeinek kezelésére szolgálnak. Egy kifejezés eredményének változóhoz való hozzárendeléséhez a hozzárendelési operátort (=) használjuk, amely a hozzárendelési operátortól jobbra lévő kifejezés által képviselt értéket tárolja a memóriahelyen, amelyre az operátor bal oldalán lévő változó hivatkozik.

Az alábbi műveletek mindegyikében mindkét operandusnak numerikus kifejezésnek vagy karakterláncnak kell lennie, amelyet a VBA számmá tud konvertálni.

Kiegészítés

A (+) jel egy összeadási művelet végrehajtására szolgál. A kifejezéseknek numerikus kifejezéseknek, karakterláncoknak kell lenniük, amelyeket a VBA számokká alakíthat, vagy dátumoknak, amelyek számtani célokra is használhatók.

Sub Slozhenie() "Példa "+" jelű aritmetikai kifejezésre Dim A1, A2, A3 As Integer "változók deklarálása A1=1 "1 érték hozzárendelése A1 változóhoz A2=2 "2 érték hozzárendelése A2 változóhoz A3=A1+A2 "az eredmény hozzárendelése add változóhoz A3 MsgBox A3 "A3 kimenet az End Sub párbeszédablakban

Az összeadási kifejezés eredményének adattípusa általában megegyezik a kifejezés legpontosabb típusával, néhány kivételtől eltekintve. A szabály alóli kivételek jól láthatóak a példákban.

Kivonás

A (-) jel a kivonási művelet végrehajtására, valamint a negatív számok jelzésére szolgál (ha változó vagy kifejezés elé helyezzük, és ugyanazt jelenti, mint a -1-gyel való szorzás). Egy szám elé helyezett mínuszjelet, amely azt jelzi, hogy a szám negatív, unáris mínuszjelnek nevezzük.

A kivonási kifejezés eredményének adattípusának meghatározásához a VBA ugyanazokat a szabályokat követi, mint az összeadási operátor előjelét használó kifejezéseknél, de van még két további szabály.

1. szabály: Ha egy kivonási kifejezésben az egyik operandus Date típusú, akkor a kifejezés eredménye is Date típusú lesz.

2. szabály: Ha egy kivonási kifejezésben mindkét operandus Date típusú, akkor a kifejezés eredménye Double típusú lesz.

Sub Vychitanie() "Példa az előjeles aritmetikai kifejezésre "-" Dim D1, D2 As Date "változódeklaráció D1=Most "érték hozzárendelés mostani dátum változó D1 D2=Now-5 "dátumérték hozzárendelése a D2 változóhoz MsgBox TypeName(D2), vbOKOnly, "Now-5" MsgBox TypeName(D1-D2), vbOKOnly, "D1-D2" End Sub

Szorzás

Az előjel (*) szorzási művelet végrehajtására szolgál, ennek a műveletnek az eredménye az operandusok szorzata. A szorzási kifejezés eredményének adattípusának meghatározásához a VBA ugyanazokat a szabályokat használja, mint az összeadást használó kifejezéseknél. A szorzási kifejezésekben az összes dátumértéket tartalmazó Variant változót számértékekké alakítja a rendszer.

"Példa a "*" előjelű aritmetikai kifejezésekre 4*10 "szorozza 4-et 10-el MyVar*2 "szorozza a MyVar-t 2-vel MyVar*OtherVar "szorozza a MyVar-t az OtherVar-al

Osztály

Az előjel (/) az osztási művelet végrehajtására szolgál, ezt a jelet a valós számok osztásjelének nevezzük. Az osztási kifejezésekben az egyik operandust elosztjuk a másikkal, és az osztás eredménye hányados.

"Példa előjeles aritmetikai kifejezésekre"/"10/4" 10 elosztása 4-gyel SajátVar/2 "MyVar elosztása 2-vel MyVar/OtherVar" oszd MyVar az OtherVar-al

Ha egy osztási kifejezés bármely operandusa Null értékre számít, akkor a kifejezés eredménye is Null. Az adattípus a valós osztáskifejezésekben általában Double, de van kivétel.

Ha egy osztási kifejezésben mindkét operandus egész vagy egyszeres típusú, akkor az osztási kifejezés eredménye Single típusú. Ha az eredmény túlcsordítja a Single tartományt, akkor a VBA duplává alakítja.

Egész osztás

A (\) jellel egész osztási műveletet hajtunk végre, amelyben az osztás eredménye mindig egy egész szám, tört rész nélkül. A VBA nem kerekíti az egész osztás hányadosát, hanem egyszerűen egész számra rövidíti, elvetve a tört részt.

Az egész osztási kifejezés eredményének adattípusa egész vagy hosszú. A VBA a kifejezés eredményének megfelelő legkisebb adattípust használja.

"Példa a "\" 10\4 "jelű aritmetikai kifejezésekre, oszd 10-et 4-gyel; visszaadja a 2 értéket MyVar\2 "osztva a MyVar-t 2-vel MyVar\OtherVar "osztva a MyVar-t az OtherVar-val

Modulo divízió

A jel (Mod) a modulo művelet végrehajtására szolgál. Modulo osztásnál a kifejezés csak az osztás maradékát adja vissza egész számként.

"Példa előjeles aritmetikai kifejezésekre "Mod" 8 Mod 2 "visszaadja a 0 értéket; 5.1 Mod 3 "visszaadja a 2 értéket; 6 Mod MyVar "ha a MyVar 3-at tartalmaz, 0-t ad vissza

Érthető magyarázat erre matematikai művelet adott a programozók egyik fórumán. Idézek onnan: "képzeld el, hogy van egy teli 50l-es kanna és egy 3l-es kanna. És egy kannával elkezded kikanalazni a vizet a kannából (csak teli kannát tudsz kihúzni). 48l kikanalazva, 2 liter maradt. .." Más szavakkal, az 50 Mod 3 2-t ad vissza.

A modulo kifejezés eredményének adattípusa Integer vagy Long. A VBA a legkisebb típust használja, amely illeszkedik a kifejezés eredményéhez.

Hatványozás

A jel (^) a hatványozási művelet végrehajtására szolgál egy számon vagy kifejezésen. A kitevő azt jelzi, hogy egy számot vagy kifejezést hányszor kell megszorozni önmagával.

"A "^" 3^3 jelű aritmetikai kifejezésre példa ugyanaz, mint a 3*3*3, a 27-es értéket adja vissza


Hozzárendelési operátor (=)

A hozzárendelési operátor egy kifejezés eredményének változóhoz való hozzárendelésére szolgál.

A hozzárendelés operátorának két szintaktikai formája van:

1 Legyen varname = kifejezés
2 varname = kifejezés


varname- bármely VBA változó

kifejezés- bármilyen VBA kifejezés


A hozzárendelési operátor első változatát a korai Basic programozási nyelvekben használták. A második lehetőség a VBA modern verziójában használatos.


Hozzárendelési utasítás végrehajtásakor a VBA először kiértékeli a hozzárendelési utasítástól jobbra lévő kifejezést, majd a kifejezés eredményét abban a változóban tárolja, amelynek neve az egyenlőségjeltől balra található.


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


A kezdő felhasználók néha nem értik az utolsó hozzárendelési művelet jelentését, amikor a művelet bal és jobb része is ugyanazt a változót tartalmazza. Ebben az esetben először a hozzárendelési operátor jobb oldalán lévő kifejezés kiértékelésének eredménye kerül a köztes memóriacellába, majd ezt az eredményt a bal oldali változóhoz rendeljük.

Például, ha az A = A +5 hozzárendelési utasításban a hozzárendelési művelet előtti A változó 7 értéket tartalmazott, akkor a művelet után a 12 (7+5) értéket fogja tartalmazni.

Nem szabad elfelejteni:

  • Bármilyen numerikus változót (vagy kifejezést) hozzárendelhet bármely más numerikus típusú változóhoz (vagy Variant típusú változóhoz);
  • Ha numerikus kifejezést rendel egy beírt változóhoz kisebb pontossággal (például Double - Long), a VBA kerekíti a kifejezés értékét, hogy megfeleljen az új értéket felvevő változó pontosságának;
  • Ha egy karakterlánc-változóhoz számot tartalmazó Változatot rendelnek, a VBA automatikusan karakterláncsá alakítja a számot.

Operátor hozzáadása (+)

Az összeadás operátor egyszerű összeadást hajt végre. Mindkét operandusnak numerikus kifejezésnek vagy karakterláncnak kell lennie, amelyeket a VBA számmá tud konvertálni. Az összeadás operátor használható számtani műveletek végrehajtására is a dátum adatokkal.


Az összeadási kifejezés eredményének adattípusa általában megegyezik a kifejezés legpontosabb típusával. De vannak kivételek:

  • A Single és Long típusú összeadás eredménye Double;
  • Ha bármilyen más adattípushoz hozzáad egy Dátum típust, az mindig Dátumot eredményez;
  • Ha az eredmény meghaladja az Integer típusú tartományt, akkor a VBA Long-ra konvertálja;
  • Ha az eredmény meghaladja a Long, Single, Date típusokat, akkor a VBA duplává alakítja át;
  • Ha az összeadási kifejezés bármely operandusa Null, akkor az összeadási kifejezés eredménye is Null.

Idézzük fel a numerikus adattípusok pontosságának növelésének sorrendjét: Byte, Integer, Long, Single, Double, Currency.

Azt kell mondani, hogy világosan meg kell érteni, hogy a VBA hogyan alakítja át az adattípusokat az aritmetikai műveletek eredményeként. Ez segít a jövőben elkerülni sok "felesleges" hibát a kódírás során.

Kivonás operátor (-)

A kivonás operátor két dolgot csinál: egy szám kivonására szolgál a másikból; egy unáris mínuszjelet jelöl (ez az a mínuszjel, amely egy szám elé kerül, jelezve, hogy az negatív szám). Ha egy változó vagy kifejezés elé egy unáris mínuszt teszünk, az ugyanaz, mintha ezt a számot megszoroznánk -1-gyel.


A kivonási kifejezésben szereplő mindkét operandusnak numerikus változónak (kifejezésnek) vagy karakterlánc-kifejezésnek kell lennie, amelyeket a VBA számmá tud konvertálni. Használhatja a kivonás operátort a dátumok kezelésére.

A VBA ugyanazokat a szabályokat használja a kivonási kifejezés eredményének adattípusának meghatározására, mint az összeadás operátort használó kifejezéseknél. De van egy kiegészítés:
Ha egy kifejezésben mindkét operandus Date típusú, akkor a kifejezés eredménye Double típusú lesz.

Szorzási operátor (*)

A szorzási operátor két számot megszoroz - a szorzási kifejezés eredménye a két operandus szorzata. A szorzási kifejezésben szereplő mindkét operandusnak numerikus kifejezésnek vagy karakterláncnak kell lennie, amelyeket a VBA számmá tud konvertálni.

A VBA ugyanazokat a szabályokat követi a szorzási kifejezés eredményének adattípusának meghatározására, mint az összeadás operátort használó kifejezésekre. A szorzási kifejezésekben az összes dátumértéket tartalmazó Variant változót számértékekké alakítja a rendszer.

Osztálykezelő (/)

A lebegőpontos osztás operátora az operandusok szokásos aritmetikai osztását hajtja végre.

Az osztási kifejezésekben az első operandust elosztjuk a második operandusszal - az osztás eredménye a hányados.

A lebegőpontos osztási kifejezésben mindkét operandusnak numerikus kifejezésnek vagy karakterláncnak kell lennie, amelyet a VBA számmá tud konvertálni.

Ha az osztáskifejezésben legalább egy operandus Null típusú, akkor az osztás eredménye is Null lesz.

A lebegőpontos osztási művelet adattípusa Dupla, kivéve:

  • Az osztáskifejezés mindkét operandusa Integer vagy Single típusú – az Single eredménye;
  • Ha a kifejezés eredménye nem túllépi a Single típus értéktartományát.

Egész osztás (\)

Az egész osztás abban különbözik a lebegőpontos osztástól, hogy az eredménye mindig egy egész szám, törtrész nélkül.

Az egész osztásos kifejezésben szereplő mindkét operandusnak numerikus kifejezésnek vagy karakterláncnak kell lennie, amelyeket a VBA számmá tud konvertálni.

Az egész osztási művelet végrehajtása előtt a VBA minden operandust egy egész számra vagy hosszú típusúra kerekít (ugyanaz a típus, mint az egész osztás eredménye).

A VBA elveti (de nem kerekít!) egy egész osztási kifejezés eredményének tört maradékát. Például a 22\5 és 24\5 kifejezések eredménye ugyanaz = 4.

Ha egy egész osztás kifejezésben legalább egy operandus Null típusú, akkor az osztás eredménye is Null.

Modulo Division (Mod)

A modulo osztás mintegy kiegészíti az egész osztást. Modulo osztásnál a kifejezés csak az osztási művelet maradékát adja vissza egész számként.
22 5. mód = 2
24 5. mód = 4
25 5. mód = 0

A modulo osztás többi tulajdonsága megegyezik az egész osztáséval.

Hatványozás (^)

A hatványozás operátora egy számot hatványra emel.



A hatványozási kifejezés mindkét operátorának numerikus kifejezésnek vagy karakterláncnak kell lennie, amelyeket a VBA számokká alakíthat.

A hatványozási operátortól balra lévő operandus csak akkor lehet negatív szám, ha a jobb oldali operandus egész szám.

A kifejezés eredménye Double típusú.

Ha a kifejezésben legalább egy operandus Null típusú, akkor a hatványozás eredménye is Null lesz.


Foglaljuk össze a fentieket.