Aritmetičke operacije u VBA: zbrajanje, oduzimanje, množenje, dijeljenje i stepenovanje. Operatori i ugrađene funkcije VBA Vba ostatak mod

Operator dodjele (=)

Operator dodjele koristi se za dodjelu rezultata izraza varijabli.

Operator dodjele ima dva sintaktička oblika:

Varname = izraz

promjenljivo ime- bilo koja VBA varijabla

izraz- bilo koji VBA izraz

Kada izvršite naredbu dodjele, VBA prvo procjenjuje izraz desno od naredbe dodjele, a zatim pohranjuje rezultat izraza u varijablu čije je ime lijevo od znaka jednakosti.

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

Korisnici početnici ponekad ne razumiju značenje posljednje operacije dodjele, kada i lijevi i desni dio operacije sadrže istu varijablu. U ovom slučaju, rezultat evaluacije izraza na desnoj strani operatora dodjele prvo se postavlja u međumemorijsku lokaciju, a zatim se taj rezultat dodjeljuje varijabli na lijevoj strani.

Na primjer, ako je u operatoru dodjele A = A +5 varijabla A prije operacije dodjele sadržavala vrijednost 7, tada će nakon operacije sadržavati vrijednost 12 (7+5).

Stvari koje treba zapamtiti:

· Možete dodijeliti bilo koju numeričku varijablu (ili izraz) bilo kojoj drugoj numeričkoj varijabli (ili vrsti varijante);

· Ako upisanoj varijabli dodijelite numerički izraz s manjom preciznošću (na primjer, Double - Long), VBA zaokružuje vrijednost izraza kako bi odgovarala preciznosti varijable koja prima novu vrijednost;

· Ako je dodijeljena varijabla tipa String varijabla tipa Varijanta koja sadrži broj, VBA automatski pretvara broj u niz.

Operator zbrajanja (+)

Operator zbrajanja izvodi jednostavno zbrajanje. Oba operanda moraju biti numerički izrazi ili nizovi koje VBA može pretvoriti u broj. Operator zbrajanja također se može koristiti za izvođenje aritmetičke operacije s tipom podataka Datum.

Tip podataka rezultata izraza zbrajanja obično je isti kao i najprecizniji tip u tom izrazu. No, postoje iznimke:

· Rezultat zbrajanja tipa Single i Long bit će Double;

· Rezultat dodavanja tipa Datum bilo kojem drugom tipu podataka uvijek će biti Datum;

· Ako rezultat prelazi raspon tipa Integer, VBA ga pretvara u Long;

· Ako rezultat premašuje tipove Long, Single, Date, VBA ga pretvara u Double;

· Ako je bilo koji operand u izrazu zbrajanja Null, tada će rezultat izraza zbrajanja također biti Null.

Prisjetimo se redoslijeda povećanja preciznosti za tipove numeričkih podataka: Byte, Integer, Long, Single, Double, Currency.

Treba reći da morate jasno razumjeti kako VBA pretvara tipove podataka kao rezultat aritmetičkih operacija. To će u budućnosti pomoći da se izbjegnu mnoge "nepotrebne" pogreške prilikom pisanja koda.

Operator oduzimanja (-)

Operator oduzimanja radi dvije stvari: koristi se za oduzimanje jednog broja od drugog; označava unarni minus (ovo je znak minus koji se stavlja ispred broja kako bi označio da se radi o negativnom broju). Stavljanje unarnog minusa ispred varijable ili izraza isto je što i množenje tog broja s -1.

Oba operanda u izrazu oduzimanja moraju biti numeričke varijable (izrazi) ili izrazi niza koje VBA može pretvoriti u broj. Za rad s datumima možete koristiti operator oduzimanja.

VBA koristi ista pravila za određivanje tipa podataka rezultata izraza za oduzimanje kao i za izraze koji koriste operator zbrajanja. Ali, postoji dodatak:

· Ako su oba operanda u izrazu tipa Date, tada će rezultat izraza biti tipa Double.

Operator množenja (*)

Operator množenja množi dva broja - rezultat izraza množenja je umnožak dvaju operanda. Oba operanda u izrazu množenja moraju biti numerički izrazi ili nizovi koje VBA može pretvoriti u broj.

VBA slijedi ista pravila za određivanje tipa podataka rezultata izraza množenja kao i za izraze koji koriste operator zbrajanja. U izrazima množenja, sve varijable Variant koje sadrže vrijednosti datuma pretvaraju se u numeričke vrijednosti.

Operator dijeljenja (/)

Operator dijeljenja s pomičnim zarezom izvodi uobičajeno aritmetičko dijeljenje svojih operanda.

U izrazima dijeljenja, prvi operand se dijeli drugim operandom - rezultat dijeljenja je kvocijent.

Oba operanda u izrazu dijeljenja s pomičnim zarezom moraju biti numerički izrazi ili nizovi koje VBA može pretvoriti u broj.

Ako je barem jedan operand u izrazu dijeljenja tipa Null, tada će rezultat dijeljenja također biti Null.

Tip podataka operacije dijeljenja s pomičnim zarezom je Double, osim:

Oba operanda u izrazu dijeljenja su tipa Integer ili Single - rezultat je Single;

Ako rezultat izraza ne prelazi raspon vrijednosti za tip Single.

Cjelobrojno dijeljenje (\)

Cjelobrojno dijeljenje razlikuje se od dijeljenja s pomičnim zarezom po tome što je njegov rezultat uvijek cijeli broj bez razlomka.

Oba operanda u izrazu cjelobrojnog dijeljenja moraju biti numerički izrazi ili nizovi koje VBA može pretvoriti u broj.

Prije izvođenja operacije cjelobrojnog dijeljenja, VBA zaokružuje svaki operand na broj tipa Integer ili Long (isti tip kao rezultat cjelobrojnog dijeljenja).

VBA odbacuje (ali ne zaokružuje!) svaki razlomački ostatak rezultata izraza cjelobrojnog dijeljenja. Na primjer, izrazi 22\5 i 24\5 će imati isti rezultat = 4.

Ako je barem jedan operand u izrazu cjelobrojnog dijeljenja tipa Null, tada će rezultat dijeljenja također biti Null.

Modulo podjela (Mod)

Modulo dijeljenje nadopunjuje cjelobrojno dijeljenje. Kod modulo dijeljenja, izraz vraća samo ostatak operacije dijeljenja kao cijeli broj.

22 Mod 5 = 2

24 Mod 5 = 4

25 Mod 5 = 0

Ostala svojstva modulo dijeljenja identična su cjelobrojnom dijeljenju.

Potenciranje (^)

Operator potenciranja diže broj na potenciju.

5 ^ 3 =125

Oba operatora u izrazu za stepenovanje moraju biti numerički izrazi ili nizovi koje VBA može pretvoriti u brojeve.

Operand s lijeve strane operatora stepenovanja može biti negativan broj samo ako je operand s desne strane cijeli broj.

Rezultat izraza je tipa Double.

Ako je barem jedan operand u izrazu tipa Null, tada će rezultat stepenovanja također biti Null.

Sažmimo gore navedeno:

VBA LOGIČKI OPERATORI

Operand za Boolean operator može biti bilo koji važeći izraz koji ima Boolean rezultat, kao i broj koji se može pretvoriti u Boolean vrijednost.

Rezultat logičke operacije je vrijednost tipa Boolean (ili Null ako je barem jedan od operanda Null).

Logički operator AND

SINTAKSA:

Operand_1 I Operand_2

Operator AND izvodi logička konjunkcija.

Rezultat ove operacije je vrijednost Istina, samo kada su oba operanda True, inače False.

Tablica istine

Operator AND može se koristiti za više operanda:

(5<7) AND (4>3) I (5=6) rezultat će biti False

Bez obzira na broj operanda, rezultat logičke operacije AND bit će True samo ako svi operandi izraza imaju vrijednost True. U svakom drugom slučaju rezultat će biti False. Imajte na umu da su operandi zatvoreni u zagrade. VBA prvo procjenjuje vrijednost svakog operanda unutar zagrada, a zatim cijeli izraz.

Logički operator ILI

SINTAKSA:

Operand_1 ILI Operand_2

Operator OR radi logička disjunkcija.

Rezultat ove operacije je True ako je barem jedan od operanda True, inače je False.

Tablica istine

Operator OR može se koristiti za više operanda:

(5<7) OR (4>3) ILI (5=6) rezultat će biti Točan

Bez obzira na broj operanda, rezultat logičke operacije ILI uvijek će biti True ako je barem jedan od operanda izraza True. Inače će rezultat biti False.

Operatori AND i OR mogu se kombinirati:

((5<7) AND (4>3)) ILI (5=6) rezultat će biti Točan

Logički operator NE

SINTAKSA:

NIJE operand

Operator NOT radi logična negacija.

Operator NOT koristi samo jedan operand.

Tablica istine

Operatori I ILI NE mogu se kombinirati:

((5<7) AND (4>3)) ILI NE (5=6) rezultat će biti Točan

Logički operator XOR

SINTAKSA:

Operand_1 XOR operand_2

Operator XOR radi logična iznimka.

Rezultat ove operacije je True ako operandi imaju različite vrijednosti, inače je False.

Tablica istine

((5<7) AND (4>3)) ILI NE (5=6) XOR (5=5) rezultat će biti False

Logički operator EQV

SINTAKSA:

Operand_1 EQV Operand_2

Operator EQV je operator logička ekvivalencija.

Rezultat ove operacije je True ako operandi imaju iste vrijednosti, inače je False.

Tablica istine

((5<7) AND (4>3)) ILI NE (5=6) EQV (5=5) rezultat će biti Točan.

Operatori usporedbe

Obično se operacije usporedbe koriste u operatorima petlje kako bi se donijela odluka o daljnjem tijeku operacija.

Rezultat svake operacije usporedbe je Booleova vrijednost: True, False.

Ako oba operanda u izrazu za usporedbu imaju isti tip podataka, VBA izvodi jednostavnu usporedbu za taj tip.

Ako oba operanda u izrazu za usporedbu imaju specifične tipove i tipovi nisu kompatibilni, VBA izdaje pogrešku neusklađenosti tipa.

Ako su jedan ili oba operanda u izrazu za usporedbu varijable tipa Variant, VBA pokušava pretvoriti tip Variant u neki kompatibilni tip.

VBA operatori: aritmetički, logički, usporedbe, dodjele

Operater je najmanja jedinica VBA koda koja se može izvršiti. Izjava može deklarirati ili definirati varijablu, postaviti opciju VBA prevoditelja ili izvesti neku radnju u programu.

U VBA postoji samo 7 aritmetičkih operatora. Četiri standardna: zbrajanje (+), oduzimanje (-), množenje (*), dijeljenje (/) i još tri:

  • potenciranje (^), na primjer 2^3 = 8 ;
  • cjelobrojno dijeljenje (\). Dijeli prvi broj s drugim, odbacujući (bez zaokruživanja) razlomak. Na primjer, 5\2 = 2 ;
  • modulo dijeljenje (Mod). Dijeli prvi broj s drugim, vraćajući samo ostatak dijeljenja. Na primjer, 5 Mod 2 = 1.

Operator dodjele u VBA je znak jednakosti. Možete to napisati ovako:

Neka je nVar = 10

ili još jednostavnije:

nVar = 10

U drugom slučaju nemojte brkati znak jednakosti s operatorom jednakosti.

Izraz

nVar = 10

znači "postavi nVar na 10", a ako linija izgleda ovako:

Ako (nVar = 10)

onda to znači "ako je vrijednost nVar 10".

Ako objekt treba dodijeliti varijabli, to se radi na druge načine.

U VBA postoji samo 8 operatora usporedbe:

  • jednakost (=), na primjer, Ako (nVar = 10);
  • veći od i manji od (> i<), например, Ako (nVar > 10);
  • veće od ili jednako i manje od ili jednako (>= i<=), например, Ako (nVar >= 10);
  • nejednak (<>), Na primjer, If(nVar<>10) ;
  • usporedba objekata (Is). Određuje odnose li se varijable objekta na isti objekt ili na različite, npr. Ako (obj1 je obj2);
  • sličnost (Like). Uspoređuje string objekt s uzorkom i utvrđuje podudara li se uzorak.

Operatori usporedbe uvijek vraćaju true ili false - true ako je izjava istinita i false ako je netočna.

Malo o usporedbi vrijednosti niza:

  • Kada se uspoređuju vrijednosti niza, velika i mala slova se uzimaju u obzir;
  • također se uzimaju u obzir razmaci u vrijednostima nizova;
  • Kada se tekstualni nizovi uspoređuju s većim/manjim, prema zadanim postavkama uspoređuju se jednostavno binarni kodovi znakova - koji je veći ili manji. Ako trebate koristiti redoslijed koji ide u abecedi, možete koristiti naredbu

Opcija Usporedi tekst

Još malo o Like operatoru. Njegova opća sintaksa izgleda ovako

Izraz1 Kao izraz2

U ovom slučaju, Expression1 je bilo koji VBA tekstualni izraz, a Expression2 je predložak koji se prosljeđuje operatoru Like. U ovom uzorku možete koristiti posebne zamjenske znakove (pogledajte tablicu 3.1)

Stol 3.1 Zamjenski znakovi za operator LIKE

Vrlo često se prilikom provjere nekoliko uvjeta koriste logički operatori:

  • I - logično I, oba uvjeta moraju biti istinita;
  • OR - logički ILI, barem jedan od uvjeta mora biti istinit;
  • NOT - logička negacija, vraća TRUE ako je uvjet lažan;
  • XOR je logična iznimka. U E1 XOR izrazu, E2 vraća TRUE ako je samo E1 = TRUE ili samo E2 = TRUE, inače FALSE;
  • EQV - ekvivalentnost dvaju izraza, vraća TRUE ako imaju istu vrijednost;
  • IMP - implikacija, vraća FALSE ako je E1 = TRUE i E2 = FALSE, inače TRUE.

Morate zapamtiti AND, OR, NOT, drugi se logički operatori rijetko koriste.

Gotovo svaki VBA program koristi operatore ulančavanja. U VBA ih ima dva - + ili &. Preporuča se uvijek koristiti & jer:

  • kada koristite &, numeričke vrijednosti automatski se pretvaraju u vrijednosti niza - nema opasnosti od pogreške;
  • Kada koristite operator +, dodavanje vrijednosti niza vrijednosti tipa Null proizvodi Null.

MsgBox "Poruka korisniku" & vUserName

Redoslijed kojim se koriste operatori može se kontrolirati pomoću zagrada.

Prilikom pisanja VBA koda u Excelu u svakom se koraku koristi skup ugrađenih operatora. Ovi se operatori dijele na matematičke, nizove, usporedbe i logičke operatore. Zatim ćemo detaljno pogledati svaku grupu operatora.

Matematički operatori

Osnovni VBA matematički operatori navedeni su u donjoj tablici.

Desni stupac tablice prikazuje zadani prioritet operatora bez zagrada. Dodavanjem zagrada u izraz možete promijeniti redoslijed u kojem se izvode VBA naredbe po želji.

String operatori

Glavni operator niza u Excel VBA je operator ulančavanja & (sjediniti):

Operatori usporedbe

Operatori usporedbe koriste se za usporedbu dva broja ili niza i vraćanje Booleove vrijednosti kao što je Booleov(Istina ili laž). Glavni operatori Excel VBA za usporedbu navedeni su u ovoj tablici:

Logički operatori

Logički operatori, poput operatora usporedbe, vraćaju Booleovu vrijednost tipa Booleov(Istina ili laž). Osnovni Excel VBA logički operatori navedeni su u donjoj tablici:

Gornja tablica ne navodi sve Booleove operatore dostupne u VBA. Cijeli popis Booleovi operatori mogu se pronaći u Visual Basic Developer Center.

Ugrađene funkcije

Postoje mnoge ugrađene funkcije dostupne u VBA koje se mogu koristiti prilikom pisanja koda. U nastavku su neki od najčešće korištenih:

Funkcija Akcijski
Trbušnjaci Vraća apsolutnu vrijednost zadanog broja.
  • Trbušnjaci (-20) vraća vrijednost 20;
  • Trbušnjaci (20) vraća vrijednost 20.
Chr Vraća ANSI znak koji odgovara numeričkoj vrijednosti parametra.
  • Chr (10) vraća prijelom retka;
  • Chr (97) vraća znak a.
Datum Vraća trenutni sistemski datum.
Dodavanje datuma Dodaje određeni vremenski interval određenom datumu. Sintaksa funkcije:

Dodavanje datuma( interval , broj , datum )

Gdje je argument interval definira tip vremenskog intervala koji se dodaje zadanom datum u iznosu navedenom u argumentu broj .

Argument interval može uzeti jednu od sljedećih vrijednosti:

  • DateAdd(“d”, 32, “01/01/2015”) dodaje 32 dana na datum 01/01/2015 i tako vraća datum 02/02/2015.
  • DateAdd("ww", 36, "01.01.2015.") dodaje 36 tjedana na datum 01.01.2015. i vraća datum 09.09.2015.
DateDiff Izračunava broj navedenih vremenskih intervala između dva dana.
  • DateDiff(“d”, “01/01/2015”, “02/02/2015”) izračunava broj dana između datuma 01/01/2015 i 02/02/2015, vraćajući rezultat 32.
  • DateDiff(“ww”, “01/01/2015”, “03/03/2016”) izračunava broj tjedana između datuma 01/01/2015 i 03/03/2016, vraćajući rezultat 61.
Dan Vraća cijeli broj koji odgovara danu u mjesecu zadanog datuma.

Primjer: Dan ("29.01.2015.") vraća broj 29.

Sat Vraća cijeli broj koji odgovara broju sati u zadanom vremenu.

Primjer: Sat (“22:45:00”) vraća broj 22.

InStr Uzima cijeli broj i dva niza kao argumente. Vraća položaj pojavljivanja drugog niza unutar prvog, započinjući pretraživanje na položaju određenom cijelim brojem.
  • InStr(1, “Ovdje je riječ koju tražite”, “riječ”) vraća broj 13.
  • InStr(14, “Ovdje je riječ za pretraživanje, a ovdje je još jedna riječ za pretraživanje”, “riječ”) vraća broj 38.

Bilješka: Argument broja možda nije naveden, u kojem slučaju pretraživanje počinje od prvog znaka niza navedenog u drugom argumentu funkcije.

Int Vraća cijeli broj zadanog broja.

Primjer: Int (5,79) vraća rezultat 5.

Isdate Povratak Pravi ako je dana vrijednost datum, ili lažno– ako nije spoj.
  • IsDate(“1.1.2015.”) vraća Pravi;
  • IsDatum (100) vraća lažno.
IsError Povratak Pravi, ako je navedena vrijednost pogreška, ili lažno– ako nije greška.
Nedostaje Ime se prosljeđuje kao argument funkciji izborni argument postupci. Nedostaje vraća Pravi, ako nije proslijeđena vrijednost za predmetni argument procedure.
JeNumeric Povratak Pravi ako se dana vrijednost može smatrati brojem, inače vraća lažno.
Lijevo Vraća navedeni broj znakova od početka proslijeđenog niza. Sintaksa funkcije je sljedeća:

Lijevo( crta , duljina )

Gdje crta je izvorni niz, i duljina– broj vraćenih znakova, računajući od početka retka.

  • Lijevo ("abvgdezziklmn", 4) vraća niz “abvg”;
  • Lijevo ("abvgdezziklmn", 1) vraća niz "a".
Len Vraća broj znakova u nizu.

Primjer: Len ("abvgdez") vraća broj 7.

Mjesec Vraća cijeli broj koji odgovara mjesecu zadanog datuma.

Primjer: Mjesec ("29.01.2015.") vraća vrijednost 1.

Sredina Vraća određeni broj znakova iz sredine proslijeđenog niza. Sintaksa funkcije:

Sredina ( crta , Početak , duljina )

Gdje crta je izvorni niz Početak– položaj početka izdvojene linije, duljina– broj znakova koje treba izdvojiti.

  • Sredina ("abvgdezziklmn", 4, 5) vraća niz "gdje";
  • Sredina ("abvgdezziklmn", 10, 2) vraća niz “cl”.
Minuta Vraća cijeli broj koji odgovara broju minuta u određenom vremenu. Primjer: Minuta ("22:45:15") vraća vrijednost 45.
Sada Vraća trenutni sistemski datum i vrijeme.
Pravo Vraća navedeni broj znakova s ​​kraja proslijeđenog niza. Sintaksa funkcije:

Pravo( crta , duljina )

Gdje crta je izvorni niz, i duljina– ovo je broj znakova koje je potrebno izdvojiti, računajući od kraja zadanog niza.

  • Desno ("abvgdezziklmn", 4) vraća niz “clmn”;
  • Desno ("abvgdezziklmn", 1) vraća niz "n".
Drugi Vraća cijeli broj koji odgovara broju sekundi u zadanom vremenu.

Primjer: Drugi ("22:45:15") vraća vrijednost 15.

Sqr Vraća kvadratni korijen numeričke vrijednosti proslijeđene kao argument.
  • Sqr (4) vraća vrijednost 2;
  • Sqr (16) vraća vrijednost 4.
Vrijeme Vraća trenutno vrijeme sustava.
Ubound Vraća gornji indeks dimenzije navedenog polja.

Bilješka: Za višedimenzionalne nizove, izborni argument može odrediti indeks koje dimenzije treba vratiti. Ako nije navedeno, zadana vrijednost je 1.

Pogledajmo pobliže kako VBA izvodi aritmetičke operacije kao što su zbrajanje, oduzimanje, množenje, dijeljenje i stepenovanje, kao i posebne operacije kao što su cjelobrojno dijeljenje i modulo dijeljenje. Tablica u nastavku prikazuje znakove operacija koji se koriste pri pisanju aritmetičkih VBA izraza.

Izraz je vrijednost ili grupa vrijednosti koje izražavaju jednu vrijednost. Rezultat izraza je jedna vrijednost određena vrsta podaci. Znakovi (oznake) operacija služe za akcije na određene vrijednosti u izrazima. Da biste dodijelili rezultat izraza varijabli, upotrijebite operator dodjele (=), koji pohranjuje bilo koju vrijednost predstavljenu izrazom desno od operatora dodjele na memorijsku lokaciju na koju upućuje varijabla lijevo od tog operatora.

U svim operacijama u nastavku oba operanda moraju biti numerički izrazi ili nizovi koje VBA može pretvoriti u broj.

Dodatak

Znak (+) služi za izvođenje operacije zbrajanja. Izrazi moraju biti numerički izrazi, nizovi koje VBA može pretvoriti u brojeve ili datumi koji se također mogu koristiti za aritmetiku.

Sub Slozhenie() "Primjer aritmetičkog izraza sa znakom "+" Dim A1, A2, A3 As Integer "deklariranje varijabli A1=1 "dodjeljivanje vrijednosti 1 varijabli A1 A2=2 "dodjeljivanje vrijednosti 2 varijabli A2 A3=A1 +A2 "dodjeljivanje zbrajanja rezultata varijable A3 MsgBox A3 "izlaz A3 u dijaloškom okviru End Sub

Tip podataka rezultata izraza zbrajanja obično je isti kao i najprecizniji tip u tom izrazu, uz nekoliko iznimaka. Sve iznimke od ovog pravila jasno su prikazane u primjerima.

Oduzimanje

Znak (-) koristi se za izvođenje operacije oduzimanja, kao i za označavanje negativnih brojeva (kada se stavi ispred varijable ili izraza i znači isto što i množenje s -1). Znak minus ispred broja koji označava da je broj negativan naziva se unarni znak minus.

Za određivanje tipa podataka rezultata izraza za oduzimanje, VBA slijedi ista pravila kao za izraze koji koriste operator zbrajanja, ali postoje dva dodatna pravila.

Pravilo 1. Ako je u izrazu oduzimanja jedan od operanda tipa Datum, tada će rezultat izraza biti tipa Datum.

Pravilo 2: Ako su oba operanda u izrazu oduzimanja tipa Datum, tada će rezultat izraza biti tipa Double.

Sub Vychitanie() "Primjer aritmetičkog izraza sa znakom "-" Dim D1, D2 As Date "deklariranje varijabli D1=Now "dodjeljivanje vrijednosti trenutni datum varijabla D1 D2=Now-5 "dodjeljivanje vrijednosti datuma varijabli D2 MsgBox TypeName(D2), vbOKOnly, "Now-5" MsgBox TypeName(D1-D2), vbOKOnly, "D1-D2" End Sub

Množenje

Znak (*) se koristi za izvođenje operacije množenja, rezultat ove operacije je umnožak operanda. Za određivanje tipa podataka rezultata izraza množenja, VBA koristi ista pravila kao za izraze koji koriste zbrajanje. U izrazima množenja, sve varijable Variant koje sadrže vrijednosti datuma pretvaraju se u numeričke vrijednosti.

"Primjer aritmetičkih izraza sa znakom "*" 4*10 "množenje 4 sa 10 MyVar*2 "množenje MyVar sa 2 MyVar*OtherVar "množenje MyVar sa OtherVar

Podjela

Znak (/) služi za izvođenje operacije dijeljenja, ovaj znak se naziva znak dijeljenja za realne brojeve. U izrazima dijeljenja jedan se operand dijeli drugim, a rezultat dijeljenja je kvocijent.

"Primjer aritmetičkih izraza sa znakom "/" 10/4 "dijeljenje 10 s 4 MyVar/2 "dijeljenje MyVar s 2 MyVar/OtherVar "dijeljenje MyVar s OtherVar

Ako je bilo koji operand u izrazu dijeljenja Null, tada je i rezultat izraza Null. Tip podataka u izrazima dijeljenja realnih brojeva obično je Double, ali postoji iznimka.

U izrazu dijeljenja, ako su oba operanda tipa Integer ili Single, tada je rezultat izraza dijeljenja tipa Single. Ako rezultat prelazi raspon za tip Single, VBA ga pretvara u tip Double.

Cjelobrojno dijeljenje

Znak (\) koristi se za izvođenje operacije cjelobrojnog dijeljenja, pri čemu je rezultat dijeljenja uvijek cijeli broj bez razlomka. VBA ne zaokružuje kvocijent cjelobrojnog dijeljenja, već ga jednostavno skraćuje na cijeli broj, odbacujući razlomački dio.

Tip podataka rezultata izraza cjelobrojnog dijeljenja je Integer ili Long. VBA koristi najmanji tip podataka koji odgovara rezultatu izraza.

"Primjer aritmetičkih izraza sa znakom "\" 10\4 "koji dijeli 10 sa 4; vraća 2 MyVar\2 "dijeljenje MyVar s 2 MyVar\OtherVar" dijeljenje MyVar s OtherVar

Modulo dijeljenje

Znak (Mod) služi za obavljanje modulo dijeljenja. Prilikom dijeljenja po modulu, izraz vraća samo ostatak dijeljenja kao cijeli broj.

"Primjer aritmetičkih izraza s predznakom "Mod" 8 Mod 2 "vraća 0; 5.1 Mod 3 "vraća 2; 6 Mod MyVar "ako MyVar sadrži 3, vraća 0

Dano je lako razumljivo objašnjenje ove matematičke operacije na jednom od programerskih foruma. Citirat ću odatle: "zamislite da postoji pun kanister od 50 litara i staklenka od 3 litre. I počnete staklenkom grabiti vodu iz kanistra (možete samo crtati puna staklenka). Izvukao sam 48 litara, ostalo je 2 litre. Ovo je modul od 50 podijeljeno s 3." Drugim riječima, 50 Mod 3 vraća 2.

Tip podataka rezultata izraza modulo dijeljenja je Integer ili Long. VBA koristi najmanji tip koji je prikladan za rezultat izraza.

Potenciranje

Znak (^) se koristi za izvođenje operacije stepenovanja broja ili izraza. Eksponent pokazuje koliko puta broj ili izraz treba pomnožiti sam sa sobom.

"Primjer aritmetičkog izraza sa znakom "^" 3 ^ 3 "je isti kao 3*3*3, vraća vrijednost 27


Operator dodjele (=)

Operator dodjele koristi se za dodjelu rezultata izraza varijabli.

Operator dodjele ima dva sintaktička oblika:

1 Neka varname = izraz
2 Varname = izraz


promjenljivo ime- bilo koja VBA varijabla

izraz- bilo koji VBA izraz


Prva verzija operatora dodjele korištena je u prvim jezicima Osnovno programiranje. Druga se opcija koristi u modernoj verziji VBA.


Kada izvršite naredbu dodjele, VBA prvo procjenjuje izraz desno od naredbe dodjele, a zatim pohranjuje rezultat izraza u varijablu čije je ime lijevo od znaka jednakosti.


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


Korisnici početnici ponekad ne razumiju značenje posljednje operacije dodjele, kada i lijevi i desni dio operacije sadrže istu varijablu. U ovom slučaju, rezultat evaluacije izraza na desnoj strani operatora dodjele prvo se postavlja u međumemorijsku lokaciju, a zatim se taj rezultat dodjeljuje varijabli na lijevoj strani.

Na primjer, ako je u operatoru dodjele A = A +5 varijabla A prije operacije dodjele sadržavala vrijednost 7, tada će nakon operacije sadržavati vrijednost 12 (7+5).

Stvari koje treba zapamtiti:

  • Možete dodijeliti bilo koju numeričku varijablu (ili izraz) bilo kojoj drugoj numeričkoj varijabli (ili varijanti);
  • Ako unesenoj varijabli dodijelite numerički izraz s manjom preciznošću (na primjer, Double - Long), VBA zaokružuje vrijednost izraza kako bi odgovarala preciznosti varijable koja prima novu vrijednost;
  • Ako je varijabla String dodijeljena varijabli Variant koja sadrži broj, VBA automatski pretvara broj u niz.

Operator zbrajanja (+)

Operator zbrajanja izvodi jednostavno zbrajanje. Oba operanda moraju biti numerički izrazi ili nizovi koje VBA može pretvoriti u broj. Operator zbrajanja također se može koristiti za izvođenje aritmetičkih operacija na datumskim podacima.


Tip podataka rezultata izraza zbrajanja obično je isti kao i najprecizniji tip u tom izrazu. No, postoje iznimke:

  • Rezultat zbrajanja Single i Long je Double;
  • Dodavanje vrste datuma bilo kojoj drugoj vrsti podataka uvijek će rezultirati datumom;
  • Ako rezultat prelazi raspon tipa Integer, VBA ga pretvara u Long;
  • Ako rezultat prelazi tipove Long, Single, Date, VBA ga pretvara u Double;
  • Ako je bilo koji operand u izrazu zbrajanja Null, tada će rezultat izraza zbrajanja također biti Null.

Prisjetimo se redoslijeda povećanja preciznosti za tipove numeričkih podataka: Byte, Integer, Long, Single, Double, Currency.

Treba reći da morate jasno razumjeti kako VBA pretvara tipove podataka kao rezultat aritmetičkih operacija. To će u budućnosti pomoći da se izbjegnu mnoge "nepotrebne" pogreške prilikom pisanja koda.

Operator oduzimanja (-)

Operator oduzimanja radi dvije stvari: koristi se za oduzimanje jednog broja od drugog; označava unarni minus (ovo je znak minus koji se stavlja ispred broja kako bi označio da se radi o negativnom broju). Stavljanje unarnog minusa ispred varijable ili izraza isto je što i množenje tog broja s -1.


Oba operanda u izrazu oduzimanja moraju biti numeričke varijable (izrazi) ili izrazi niza koje VBA može pretvoriti u broj. Za rad s datumima možete koristiti operator oduzimanja.

VBA koristi ista pravila za određivanje tipa podataka rezultata izraza za oduzimanje kao i za izraze koji koriste operator zbrajanja. Ali, postoji dodatak:
Ako su oba operanda u izrazu tipa Datum, tada će rezultat izraza biti tipa Double.

Operator množenja (*)

Operator množenja množi dva broja - rezultat izraza množenja je umnožak dvaju operanda. Oba operanda u izrazu množenja moraju biti numerički izrazi ili nizovi koje VBA može pretvoriti u broj.

VBA slijedi ista pravila za određivanje tipa podataka rezultata izraza množenja kao i za izraze koji koriste operator zbrajanja. U izrazima množenja, sve varijable Variant koje sadrže vrijednosti datuma pretvaraju se u numeričke vrijednosti.

Operator dijeljenja (/)

Operator dijeljenja s pomičnim zarezom izvodi uobičajeno aritmetičko dijeljenje svojih operanda.

U izrazima dijeljenja, prvi operand se dijeli drugim operandom - rezultat dijeljenja je kvocijent.

Oba operanda u izrazu dijeljenja s pomičnim zarezom moraju biti numerički izrazi ili nizovi koje VBA može pretvoriti u broj.

Ako je barem jedan operand u izrazu dijeljenja tipa Null, tada će rezultat dijeljenja također biti Null.

Tip podataka operacije dijeljenja s pomičnim zarezom je Double, osim:

  • Oba operanda u izrazu dijeljenja su tipa Integer ili Single - rezultat je Single;
  • Ako rezultat izraza ne prelazi raspon vrijednosti za tip Single.

Cjelobrojno dijeljenje (\)

Cjelobrojno dijeljenje razlikuje se od dijeljenja s pomičnim zarezom po tome što je njegov rezultat uvijek cijeli broj bez razlomka.

Oba operanda u izrazu cjelobrojnog dijeljenja moraju biti numerički izrazi ili nizovi koje VBA može pretvoriti u broj.

Prije izvođenja operacije cjelobrojnog dijeljenja, VBA zaokružuje svaki operand na broj tipa Integer ili Long (isti tip kao rezultat cjelobrojnog dijeljenja).

VBA odbacuje (ali ne zaokružuje!) svaki razlomački ostatak rezultata izraza cjelobrojnog dijeljenja. Na primjer, izrazi 22\5 i 24\5 će imati isti rezultat = 4.

Ako je barem jedan operand u izrazu cjelobrojnog dijeljenja tipa Null, tada će rezultat dijeljenja također biti Null.

Modulo podjela (Mod)

Modulo dijeljenje nadopunjuje cjelobrojno dijeljenje. Kod modulo dijeljenja, izraz vraća samo ostatak operacije dijeljenja kao cijeli broj.
22 Mod 5 = 2
24 Mod 5 = 4
25 Mod 5 = 0

Ostala svojstva modulo dijeljenja identična su cjelobrojnom dijeljenju.

Potenciranje (^)

Operator potenciranja diže broj na potenciju.



Oba operatora u izrazu za stepenovanje moraju biti numerički izrazi ili nizovi koje VBA može pretvoriti u brojeve.

Operand s lijeve strane operatora stepenovanja može biti negativan broj samo ako je operand s desne strane cijeli broj.

Rezultat izraza je tipa Double.

Ako je barem jedan operand u izrazu tipa Null, tada će rezultat stepenovanja također biti Null.


Sažmimo gore navedeno.