Vba negacija. Operatori usporedbe (Visual Basic). Osnovni VBA tipovi podataka

28.03.2020 Vijesti

znakImeOpis
= JednakoVraća True ako su lijevi i desni operandi jednaki. Imajte na umu da je ovo preopterećenje operatora dodjele.
<> NejednakVraća True ako lijevi i desni operand nisu jednaki.
> Bolje negoVraća True ako je lijevi operand veći od desnog.
< Manje odVraća True ako je lijevi operand manji od desnog operanda.
>= Više ili jednakoVraća True ako je lijevi operand veći ili jednak desnom operandu.
<= Manje ili jednakoVraća True ako je lijevi operand manji ili jednak desnom operandu.
Je Referentni kapitalVraća True ako je lijeva referenca objekta ista instanca kao referenca desnog objekta. Također se može koristiti s Nothing (nulta referenca objekta) na obje strane. Bilješka. Is operator će pokušati prisiliti oba operanda na Object prije izvođenja usporedbe. Ako je bilo koja strana primitivan tip ili Usporedba varijante koja ne sadrži objekt (bilo podtip koji nije objekt ili vtEmpty) rezultirat će pogreškom vremena izvođenja 424 - "Potreban je objekt". Ako bilo koji operand pripada drugom sučelje isti objekt, usporedba će vratiti True . Ako trebate provjeriti pravednost oba slučaja, onda I sučelje, ObjPtr(lijevo) = ObjPtr(desno) koristi ObjPtr(lijevo) = ObjPtr(desno) .

Bilješke

VBA sintaksa dopušta "ulančavanje" operatora za usporedbu, ali općenito ove konstrukcije treba izbjegavati. Usporedba se uvijek radi slijeva nadesno na samo 2 operanda odjednom, a svaka usporedba rezultira Booleovim. Na primjer, izraz...

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

Može se čitati u nekim kontekstima kao testiranje je li b između a i c. U VBA se to procjenjuje na sljedeći način:

A = 2: b = 1: c = 0 expr = a > b > c expr = (2 > 1) > 0 expr = True > 0 expr = -1 > 0 "CInt(True) = -1 expr = False

Svaki operator usporedbe osim Is koji se koristi s Objectom kao operandom izvršit će povratnu vrijednost zadanog člana Object-a. Ako objekt nema zadanog člana, usporedba će rezultirati pogreškom vremena izvođenja 438 - "Objekt ne podržava svoje svojstvo ili metodu."

Ako se objekt ne inicijalizira, usporedba će rezultirati pogreškom vremena izvođenja 91 - "Varijabla objekta ili s zaključanom varijablom bloka."

Ako se literal Nothing koristi s bilo kojim operatorom usporedbe osim Is, to će rezultirati pogreškom kompilacije - "Illegal use of object".

Ako je Objectov zadani Object drugi Objekt, VBA će kontinuirano pozivati ​​zadani element svake sljedeće povratne vrijednosti dok se ne vrati primitivni tip ili dok se ne pojavi pogreška. Na primjer, pretpostavimo da SomeClass ima zadani član Value, koji je instanca ChildClass s ChildValue članom ChildValue. Usporedba...

Postavi x = New SomeClass Debug.Print x > 42

Ocjenjivat će se kao:

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

Ako je bilo koji od operanda numerički i još operand je niz ili varijanta podtipa niza, izvršit će se numerička usporedba. U ovom slučaju, ako se niz ne može preslikati na broj, rezultat usporedbe bit će pogreška vremena izvođenja 13 - "Nepodudaranje tipa".

Ako oba operandi su niz ili varijanta podtipa niza, usporedba niza će se izvesti na temelju parametra usporedbe parametara kodnog modula. Ove se usporedbe rade na temelju znaka po znaka. imajte na umu da simbolički prikaz Niz koji sadrži broj Ne je isto što i podudaranje numeričkih vrijednosti:

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

Iz tog razloga provjerite jesu li varijable String ili Variant proslijeđene brojevima prije izvođenja numeričkih usporedbi nejednakosti.

Ako je jedan od operanda datum, tada će se izvršiti numerička usporedba na osnovnom dvojniku ako je drugi operand numerički ili se može pretvoriti u numerički tip.

Ako je drugi operand String ili varijanta podtipa Stringa koji se može pretvoriti u Date koristeći trenutnu lokalizaciju, String će se pretvoriti u Date. Ako se ne može primijeniti na Datum u trenutnoj lokalnoj postavci, rezultat usporedbe bit će pogreška vremena izvođenja 13 - "Nepodudaranje tipa".

Treba biti oprezan pri usporedbi Double ili Single vrijednosti i Booleovih vrijednosti. Za razliku od drugih numeričkih tipova, vrijednosti različite od nule ne mogu se smatrati True zbog ponašanja VBA u promicanju vrste podataka usporedbe koristeći broj s pomičnim zarezom u Double:

Public Sub Example() Dim Test As Double Test = 42 Debug.Print CBool(Test) "Ispisuje True." True se promiče u Double - Test se ne pretvara u Boolean Debug.Print Test = True "Ispisuje False "S eksplicitnim pretvaranjima: Debug.Print CBool(Test) = True "Ispisuje True Debug.Print CDbl(-1) = CDbl(True) "Ispisuje True End Sub


Operater Sintaksa Opis
I A I B Konjunkcija: Ako su A i B Istina, onda je Istina. Inače - False
ILI A ILI B Disjunkcija: Ako je bilo koji od operanda True, tada je True. Inače - False
NE NE A Negacija: Ako je A False, onda je True. Inače - False
XOR A XOR B Iznimka: Ako je A Istina ili B je Istina, onda - Istina. Inače - False
EQV A EQV B Ekvivalencija: Ako A ima istu vrijednost kao B, onda je True. Inače - False
IMP A IMP B Implikacija: Ako je A točno, a B netočno, tada je netočno. Inače - Istina

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 True samo kada su oba operanda True, inače False.


Tablica istine


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


(5 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 3) ILI (5=6) rezultat će biti Istina


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 3)) ILI (5=6) rezultat će biti True

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 3)) ILI NE (5=6) rezultat će biti Istina

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 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 3)) ILI NE (5=6) EQV (5=5) rezultat će biti Istina

Logički operator IMP

Sintaksa:
Operand_1 IMP Operand_2


IMP operator izvodi logičku operaciju implikacije.


Tablica istine


((5 3)) ILI NE (5=6) IMP (5=5) rezultat će biti Istina


IMP logički operator najmanje je intuitivan od svih logičkih operatora. Srećom, potreba za njegovom upotrebom javlja se prilično rijetko.


U Visual Basicu postoji pet osnovnih i važnih logičkih operatora: And, Or, Not, Xor i Eqv. Sada ću pokušati objasniti ulogu svakog od njih!

Dakle, I!
Ovo je vjerojatno najjednostavniji i najpotrebniji logički operator među ostalima.

Pomozite:
Vraća rezultat konjunkcije (logičko I) dvaju izraza.

Sintaksa:
rezultat = izraz1Iizraz2

Oni. proizlaziti bit će istinito samo ako je istinito izraz1Iizraz2. Vrijednosti koje vraća operater prikazane su u sljedećoj tablici:

izraz1 izraz2 proizlaziti
Pravi Pravi Pravi
Pravi lažno lažno
Pravi Null Null
lažno Pravi lažno
lažno lažno lažno
lažno Null lažno
Null Pravi Null
Null lažno lažno
Null Null Null

A sada mali primjer:

Zamislimo da su varijable User_Has_Computer i User_Has_Car deklarirane kao Boolean vrijednosti i u procesu neke akcije poprimaju vrijednosti True ili False. Postavljate uvjet koji provjerava ove vrijednosti:

Mi to sami emuliramo :) - unesite sljedeće retke negdje:


Dim User_Has_Car Kao Booleov
Korisnik_ima_računalo = Istina
Korisnik_ima_auto = Istina

Ako Korisnik_Ima_Računalo I Korisnik_Ima_Auto Onda
MsgBox "Vi ste sretna osoba!"
Završi ako

Prilikom provjere ovo stanje Na ekranu će se pojaviti poruka koja vas obavještava da je korisnik sretna osoba, jer... on ima auto I Računalo:-)! I sada prije trećeg ili četvrtog retka stavite apostrof """ - komentirajte redak. Sada će jedna od varijabli prema zadanim postavkama biti False. Sada poruka NEĆE iskočiti, jer korisnik nije baš zadovoljan što ima auto ILI Računalo...

Sljedeći operator nije manje jednostavan - Or.

Pomozite:
Izvodi logičku operaciju ILI (zbrajanje) na dva izraza.

Sintaksa:
rezultat = izraz1Iliizraz2

Rezultat će biti istinit samo ako je samo jedan od izraza istinit. Vrijednosti koje vraća operater prikazane su u sljedećoj tablici:

izraz1 izraz1 proizlaziti
Pravi Pravi Pravi
Pravi lažno Pravi
Pravi Null Pravi
lažno Pravi Pravi
lažno lažno lažno
lažno Null Null
Null Pravi Pravi
Null lažno Null
Null Null Null

I opet mali primjer s istim Boolean varijablama User_Has_Computer i User_Has_Car, koji su u procesu neke akcije poprimili vrijednosti True ili False.

Dim User_Has_Computer Kao Booleov
Dim User_Has_Car Kao Booleov
Korisnik_ima_računalo = False
Korisnik_ima_auto = Istina

Ako Korisnik_ima_računalo ili korisnik_ima_auto Zatim
MsgBox "Vi ste skoro sretna osoba!"
Završi ako

Prilikom provjere ovog uvjeta, na ekranu će se pojaviti poruka koja obavještava da je korisnik gotovo sretna osoba, jer ima auto, ali nema kompjuter :-|...

Nije operater

Pomozite:
Izvodi operaciju logičke negacije na izrazu.

Sintaksa:
proizlaziti = Ne izraz

Oni. proizlaziti postaje suprotnost izraz(isključujući Null). Vrijednosti koje vraća operater prikazane su u sljedećoj tablici:

Primjer:

Dim User_Has_Computer Kao Booleov

Korisnik_ima_računalo = False

If Not User_Has_Computer Onda
MsgBox "Suosjećam...:)"
Završi ako

Dopustite mi da objasnim: uvjet If ... Then se izvršava kada je neki izraz (na mjestu ...) True. Zamislimo da varijabla Korisnik_ima_računalo = False. Zatim linija
Not User_Has_Computer daje rezultat True i uvjet je true!

Xor operator.

Pomozite:
Izvodi operaciju isključivi ILI na dva izraza.

Sintaksa:
[proizlaziti =] izraz1 Xor izraz2

U principu, ovaj operator je sličan Ili, ali nije jednostavan ILI, i ekskluzivno ILI. Ako jedan i samo jedan od izrazi true (ima vrijednost True), proizlaziti je istina. A operator Or dopušta dva istinita izrazi. Proizlaziti

Primjer:

Dim User_Has_Computer Kao Booleov
Dim User_Has_Car Kao Booleov
Korisnik_ima_računalo = False
Korisnik_ima_auto = Istina

Ako Korisnik_Ima_Računalo Xili Korisnik_Ima_Auto Tada
MsgBox "Trebate auto i računalo!"
Završi ako

I ovdje, kao iu prethodnom primjeru, uvjet je ispunjen samo kada je redak User_Has_Computer Xor User_Has_Car je istina (= Istina). A istinito je ako i samo ako je samo jedan od uvjeta istinit. Ako oboje, tada uvjet više neće biti ispunjen.

Operator Eqv.

Pomozite:
Koristi se za testiranje logičke ekvivalentnosti dvaju izraza.

Sintaksa:
proizlaziti = izraz1 Ekv izraz2

Ovdje je sve vrlo jednostavno: rezultat će biti istinit ako su oba izraza istinita ili lažna. Proizlaziti definira se na sljedeći način:

Primjer:

Dim User_Has_Computer Kao Booleov
Dim User_Has_Car Kao Booleov
Korisnik_ima_računalo = Istina
Korisnik_ima_auto = Istina

If User_Has_Computer Eqv User_Has_Car Then
MsgBox "Ili ste sretna ili nesretna osoba!"
Završi ako

Ovdje će vas računalo nazvati “sretnom ili nesretnom” osobom, jer... uvjet je zadovoljen samo kada korisnik ima i automobil i računalo ili nijedno.

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.

Usporedba nizova

Kada uspoređuje nizove s relacijskim operatorima, VBA uspoređuje svaki niz slijeva nadesno, znak po znak.

U VBA je jedan niz jednak drugom samo kada oba niza sadrže potpuno iste znakove u potpuno istom redoslijedu i oba su niza iste duljine. Na primjer, nizovi "abcd" "abcd" " abcd" nisu međusobno jednaki jer VBA ne zanemaruje znakove razmaka na početku ili na kraju kada uspoređuje nizove.

Trebali biste biti oprezni pri usporedbi nizova promjenjive duljine.

Usporedba binarnih i tekstualnih nizova

Za pohranu teksta računalo koristi shemu u kojoj svaki prikazani znak ima jedinstveni broj. Sva slova abecede imaju svoje jedinstveni brojevi. Obično slova velika slova imaju manje brojeve od malih slova. Poziva se broj koji odgovara određenom slovu ili simbolu znakovni kod.

Prilikom izvođenja usporedbe binarnog niza VBA informacije koristi binarni ekvivalent broja za svaki znak. Ova metoda usporedbe zove se binarni ili binarni i zadana je metoda usporedbe.

Jer velika slova imaju niže binarne brojeve, velika slova su poredana abecedom prije malih slova. Stoga će tijekom binarne usporedbe nizova niz "ABV" biti manji od niza "abc".


Kada tekstualno uspoređuje nizove, VBA ne koristi binarni ekvivalent znakova i ne "razlikuje" velika i mala slova. U usporedbi teksta, niz "abc" jednak je nizu "ABC".

Za odabir metode usporedbe nizova upotrijebite naredbu Option Compare


Opcija Usporedi


Ova direktiva mora biti u području deklaracije modula.

Ulančavanje nizova

Poziva se dodavanje jednog niza drugom spajanje nizova.

Ulančavanje nizova obično se koristi za formiranje nizova iz različitih izvora u proceduri za stvaranje poruke za prikaz. VBA ima dva operatora za ulančavanje nizova.

Operator ulančavanja (&)

Operator (&) u VBA koristi se samo za ulančavanje nizova.

Sintaksa


Operand_1 & Operand_2 [& Operand_3..]


Operand_N je bilo koji važeći niz ili numerički izraz (koji se pretvara u niz).

Tip podataka rezultata ulančavanja niza je String.

Ako je operand u izrazu spajanja nizova prazan ili null, VBA tumači taj operand kao niz nulte duljine (niz koji ne sadrži znakove).

Bilješka! Simbol (&) operacije ulančavanja mora biti odvojen razmakom od naziva varijable jer inače VBA može protumačiti znak kao znak definicije dugog tipa.

Operator zbrajanja u ulančavanju nizova

Također možete koristiti (+) operator za ulančavanje nizova.

Ovaj operator ima istu sintaksu i zahtjeve kao i (&) operator. Međutim, shvatite da je u VBA glavna svrha operatora (+) aritmetičko zbrajanje. Stoga, kako bi se izbjegla dvosmislenost u čitanju programskog koda, snažno se preporučuje korištenje operatora (&) za spajanje nizova.

Operativni prioriteti

Mnogi izrazi u programskom kodu su složeni (kompozitni), tj. sastoje se od dva ili više izraza.

Kada procjenjuje složene izraze, VBA slijedi ova pravila:

  • Dijelovi izraza u zagradama uvijek se prvi vrednuju;
  • Specifične operacije se izvode ovisno o hijerarhiji operatera (tablica u nastavku);
  • Ako je hijerarhija operatora jednaka, procjenjuju se slijeva na desno.
Operater

Ovdje su detaljno opisani svi aritmetički operatori. operatori usporedbe, logički i operatori ulančavanja. Pokušao sam prikupiti sve što trebate znati o ovim operaterima. Svaka izjava je opremljena primjerom. Opise sam preveo iz standardne pomoći"a VB5.

Aritmetički operatori

operator ^ (potenciranje)

Ovaj se operator koristi za podizanje broja na potenciju.

Sintaksa:

proizlaziti = broj^stupanj

Mogućnosti:

proizlaziti
broj
stupanj- potrebno; bilo koji numerički izraz

Bilješke:

broj može biti negativan samo ako stupanj- cijeli broj. Ako se u jednom izrazu koristi nekoliko operatora ^, tada se izračun odvija slijeva na desno. Tipično je tip rezultata Double. Međutim, ako ili stupanj, ili broj- Nulti izraz, onda proizlaziti također Null.

Primjer:

Dim MojaVrijednost
MyValue = 2^2" Vraća 4.
Moja vrijednost = 2^3^3" Će se vratiti 512 (2^3=8, 8^3=512)
Moja vrijednost = (-5)^3" Će se vratiti -125.

savjet:

Ako trebate podići broj na konstantnu potenciju, onda je bolje koristiti nekoliko operatora - množenje, nego jedan - podizanje na potenciju, prosudite sami, prošao je ciklus od milijun prolaza s izračunom izraza:

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

operator * (množenje)

Koristi se za množenje dvaju brojeva.

Sintaksa:

proizlaziti = broj 1* broj2

Mogućnosti:

proizlaziti- potrebno; bilo koju numeričku varijablu
broj 1- Obavezno; bilo koji numerički izraz
broj2- Obavezno; bilo koji numerički izraz

Bilješke:

Tip podataka rezultata obično je isti kao najprecizniji tip od dva broja. Redoslijed preciznosti, od najveće prema najnižoj, je bajt, cijeli broj, dugi, jedan, valuta, dvostruki, decimalni. Istina, postoje iznimke:

  • Ako se pomnože Single i Long, rezultat je Double
  • Ako tip podataka proizlaziti- Long Single ili Date, koji ne sadrži rezultat samog izraza, tada se rezultat pretvara u Variant koji sadrži Double.

Ako broj 1 ili broj2

Redoslijed preciznosti kod množenja razlikuje se od onog koji se koristi kod zbrajanja i oduzimanja.

Primjer:

Dim MojaVrijednost
MyValue = 2 * 2 " Vraća 4.
MojaVrijednost = 459,35 * MojaVrijednost " Vraća 495,35 * 4

operator / (podjela)

Koristi se za dijeljenje dva broja i dobivanje rezultata s pomičnim zarezom.

Sintaksa:

proizlaziti = broj 1 / broj2

Mogućnosti:

proizlaziti- potrebno; bilo koju numeričku varijablu
broj 1- Obavezno; bilo koji numerički izraz
broj2- Obavezno; bilo koji numerički izraz

Bilješke:

Proizlaziti obično tipa Double. Istina, postoje iznimke:

  • Ako su oba izraza tipa Byte, Integer, Single, rezultat je Single. Međutim, ako dimenzije izraza ne stanu unutar opsega Single, dolazi do pogreške.
  • Ako su oba izraza izraza tipa Variant koji sadrži Byte, Integer ili Single, tada je rezultat Jedna varijanta. Međutim, ako se dimenzije izraza ne uklapaju u jednu varijantu, tada je dvostruka varijanta.
  • Ako je jedan od brojeva tipa Decimal, rezultat je Decimal.

Ako broj 1 ili broj2- Null, onda se tumači jednostavno kao obična 0.

Primjeri:

Dim MojaVrijednost
Moja vrijednost = 10 / 4" !} Će se vratiti 2.5.
Moja vrijednost = 10 / 3 " Će se vratiti 3.333333.

operator \ (cijelobrojno dijeljenje)

Koristi se za dijeljenje dva broja i dobivanje cjelobrojnog rezultata.

Sintaksa:

proizlaziti = broj 1 \ broj2

Mogućnosti:

proizlaziti- potrebno; bilo koju numeričku varijablu
broj 1- Obavezno; bilo koji numerički izraz
broj2- Obavezno; bilo koji numerički izraz

Bilješke:

Prije nego što dođe do takve podjele, izrazi se zaokružuju na Byte, Integer ili Long izraze. Tipično je vrsta podataka rezultata bajt, varijanta bajta, cijeli broj, varijanta cijelog broja, dugačak ili duga varijanta. Svaki frakcijski dio je odrezan.

Međutim, ako je bilo koji od izraza Null, tada je rezultat Null. Svaki izraz koji sadrži Empty tumači se kao 0.

Primjeri:

Dim MojaVrijednost
Moja vrijednost = 11\4" Će se vratiti 2.
Moja vrijednost = 9\3" Će se vratiti 3.
Moja vrijednost = 100\3" Će se vratiti 33.

Mod operator (ostatak dijeljenja)

Koristi se za dijeljenje dva broja i dobivanje ostatka njihovog dijeljenja.

Sintaksa:

proizlaziti = broj 1 Mod broj2

Mogućnosti:

proizlaziti- potrebno; bilo koju numeričku varijablu
broj 1- Obavezno; bilo koji numerički izraz
broj2- Obavezno; bilo koji numerički izraz

Bilješke:

Kod dijeljenja se zaokružuju brojevi s desnom točkom. Na primjer, rezultat sljedećeg izraza je 5:

A=19 Modifikacija 6.7

Što se ovdje događa? Prvo se broj 6,7 zaokružuje na 7. Zatim dolazi do dijeljenja, dobivamo 2,7.... Ostatak dijeljenja = 5. (2 * 7 = 14, 19 - 14 = 5).

Rezultat je obično tipa Byte, Byte varijanta, Integer, Integer varijanta, Long ili Variant koji sadrži Long.

Ako je bilo koji od izraza Null, onda je rezultat Null. Svaki izraz koji sadrži Empty tumači se kao 0.

Primjeri:

Dim MojRezultat
MyResult = 10 Mod 5" Će se vratiti 0.
MyResult = 10 Mod 3" Će se vratiti 1.
MyResult = 12 Mod 4.3" Će se vratiti 0.
MyResult = 12.6 Mod 5" Će se vratiti 3.

operator + (zbrajanje)

Koristi se za zbrajanje dvaju brojeva.

Sintaksa:

proizlaziti = izraz1+izraz2

Mogućnosti:

proizlaziti- potrebno; bilo koju numeričku varijablu
izraz1
izraz2- Obavezno; bilo koji izraz

Bilješke:

Kada koristite operator +, ne možete odrediti hoće li doći do dodavanja ili ulančavanja niza. Za ulančavanje koristite & operator kako biste izbjegli zabunu i učinili kod čitljivijim.

Ako jedan od izraza nije varijanta, primjenjuju se sljedeća pravila:

  • Ako su oba izraza numeričkog tipa (Byte, Boolean, Integer, Long, Single, Double, Date, Currency ili Decimal), tada se zbrajaju.
  • Ako su oba string izraza ulančavanje.
  • Ako je jedan od izraza numeričkog tipa, a drugi je bilo koja vrijednost Variant, uključujući Null, tada dolazi do zbrajanja.
  • Ako je jedan od izraza niz, a drugi bilo koja vrijednost varijante, tada dolazi do ulančavanja.
  • Ako jedan od izraza sadrži Empty, vraća se drugi, nepromijenjeni izraz.
  • Ako je jedan od izraza numeričkog tipa, a drugi niz, javlja se pogreška neusklađenosti tipa.
  • Ako je bilo koji izraz Null, tada je i rezultat Null.

Ako su oba izraza varijanta, tada se primjenjuju sljedeća pravila:

  • Ako su oba izraza brojevi, onda se zbrajaju.
  • Ako su oba izraza nizovi, onda su spojeni.
  • Ako je jedan od izraza broj, a drugi niz, dolazi do zbrajanja.

Za obično zbrajanje, tip podataka rezultata obično je isti kao i najprecizniji tip od dva broja. Redoslijed preciznosti je Byte, Integer, Long, Single, Double, Currency i Decimal. Postoje iznimke:

  • Ako se dodaju Single i Long, rezultat je Double
  • Ako se izraz tipa Datum doda bilo kojem drugom izrazu, rezultat je Datum.

Ako su jedan ili oba izraza Null, tada je i rezultat Null. Ako oba izraza sadrže Empty, rezultat je Integer. Ako postoji samo jedan, tada se neizmijenjeni drugi izraz vraća kao rezultat.

Primjeri:

Dim MojBroj, Var1, Var2
MojBroj = 2 + 2 " Će se vratiti 4.
MojBroj = 4257,04 + 98112 " Će se vratiti 102369.04.

Var1 = "34"
Var2 = 6 "Inicijaliziraj miješane varijable
MojBroj = Var1 + Var2 " Će se vratiti 40.

Var1 = "34"
Var2 = "6" "Inicijalizirajte varijable nizovima
MojBroj = Var1 + Var2 " Će se vratiti"346" (dogodilo se
"ulančavanje, a ne zbrajanje!).

savjet:

Operator zbrajanja (+) može se koristiti za dodavanje datuma, tj. Varijable vrste datuma:

Dim d Kao Datum
d = DateSerial(2002, 8, 15) " inicijalizacija datuma 15.08.2002
d = d + 15 " sada d sadrži datum 30.08.2002
“odnosno dodali smo 15 dana

operator - (oduzimanje, promjena predznaka)

Koristi se za pronalaženje razlike između dva broja ili za promjenu predznaka izraza.

Sintaksa:

proizlaziti = izraz1- izraz2

-izraz

Mogućnosti:

proizlaziti- potrebno; bilo koju numeričku varijablu
izraz- Obavezno; bilo koji izraz
izraz1- Obavezno; bilo koji izraz
izraz2- Obavezno; bilo koji izraz

Bilješke:

U prvoj sintaksi, operator "-" potreban je za pronalaženje razlike između dva broja. U drugoj sintaksi, "-" se koristi za promjenu predznaka izrazi.

Tip podataka rezultata obično je isti kao najprecizniji tip od dva broja. Redoslijed preciznosti je Byte, Integer, Long, Single, Double, Currency i Decimal. Postoje iznimke:

  • Ako su tipovi Single i Long uključeni u oduzimanje, tada je rezultat Double
  • Ako oduzimanje koristi izraz tipa Datum,
    tada je rezultat Datum.
  • Oduzimanje dva datuma daje rezultat Double.

Ako su jedan ili oba izraza Null, tada je i rezultat Null. Ako je jedan od izraza prazan, onda se tumači kao 0.

Redoslijed preciznosti kod zbrajanja i oduzimanja razlikuje se od onog koji se koristi u množenju.

Primjeri:

Dim MojRezultat
Moj rezultat = 4 - 2 " Će se vratiti 2.
Moj rezultat = 459,35 - 334,90 " Će se vratiti 124.45.

savjet:

Poput operatora zbrajanja, operator oduzimanja može se koristiti za izračunavanje razlike (u danima) između dva datuma:

Dim d1 Kao Datum
Dim d2 Kao datum
Dim razn As Long
d1 = DateSerial(1983, 10, 14)
d2 = DateSerial(2002, 8, 15)
razn = d2 - d1 " razlika u danima (6880).

Operatori usporedbe

Koristi se za usporedbu određenih izraza. Imaju 3 sintakse:

Sintaksa:

proizlaziti = izraz1 operator usporedbe izraz2
proizlaziti = objekt1 Je objekt2
proizlaziti = crta Kao uzorak

Mogućnosti:

proizlaziti potreban; bilo koju numeričku varijablu
izraz Obavezno; bilo izraženo
operator usporedbe potreban; bilo koji operator usporedbe
objekt potreban; ime bilo kojeg objekta
crta potreban; bilo koji string izraz.
uzorak potreban; bilo koji izraz niza ili niz slova i brojeva

Bilješke:

Sljedeća tablica sadrži popis operatora usporedbe i uvjeta koji određuju rezultat izraza (točno ili netočno).

Operater

Istina ako

Netočno ako

Null ako

< (меньше чем) izraz1 <
izraz2
izraz1 >=
izraz2

jedan
iz
izraz sadrži Null

<= (меньше или равно) izraz1 <=
izraz2
izraz1 >
izraz2
> (više od) izraz1 >
izraz2
izraz1 <=
izraz2
>= (veće ili jednako) izraz1 >=
izraz2
izraz1 <
izraz2
= (jednako) izraz1 =
izraz2
izraz1 <>
izraz2
<>(nejednak) izraz1 <>
izraz2
izraz1 =
izraz2

Operatori Is i Like obavljaju specifične funkcije, a njihova usporedna tablica razlikuje se od prikazane (pogledat ćemo ih u nastavku).

Kada se uspoređuju dva izraza, nije uvijek moguće odrediti hoće li se uspoređivati ​​brojevi ili nizovi. Sljedeće pokazuje kako će se rezultat izračunati ako su oba izraza tipa različitog od Variant:

  • Ako su oba izraza brojevi (Byte, Boolean, Integer, Long, Single, Double, Date, Currency ili Decimal), tada se brojevi uspoređuju.
  • Ako su oba izraza nizovi, dolazi do usporedbe nizova. (manji redak je onaj čija prva i naredna slova imaju manji ascii kod).
  • Ako je jedan od izraza broj, a drugi je varijanta, koja se može interpretirati kao broj, tada se brojevi uspoređuju.
  • Ako je jedan od izraza broj, a druga varijanta je niz koji se ne može interpretirati kao broj, tada dolazi do pogreške (neusklađenost tipa).
  • Ako je jedan od izraza niz, a drugi je bilo koja vrijednost varijante (čak i Null), tada dolazi do usporedbe niza.
  • Ako je jedan od izraza Empty, a drugi je broj, dolazi do usporedbe brojeva, gdje se Empty tretira kao 0.
  • Ako je jedan od izraza Empty, a drugi je niz, dolazi do usporedbe niza, gdje se Empty tretira kao prazan niz "".

Ako su i prvi i drugi izraz tipa Variant, onda se izrazi uspoređuju prema tipovima podataka koje Variant sadrži:

  • Ako oba izraza varijante sadrže brojeve, tada se brojevi uspoređuju.
  • Ako oba Variant izraza sadrže nizove, tada se nizovi uspoređuju.
  • Ako jedan od Varijantnih izraza sadrži broj, a drugi niz, tada je numerički izraz manji od niza.
  • Ako je jedan od izraza varijante prazan, a drugi broj, prazan se tretira kao 0.
  • Ako je jedan od izraza Variant Empty, a drugi je niz, onda se Empty tretira kao prazan niz "".
  • Ako su oba izraza prazna, tada se smatraju jednakima.

Kada se varijabla Single uspoređuje s varijablom Double, Double se zaokružuje na preciznost varijable Single.

Ako se valuta uspoređuje s jednostrukom ili dvostrukom, tada se jednostruka ili dvostruka pretvara u valutu. Isto tako, kada se uspoređuje Decimal s Single ili Double, tada se Single ili Double pretvara u Decimal. Za valutu, svaki razlomak manji od 0,0001 može biti izgubljen. Za Decimal ova vrijednost je 1E-28 ili može doći do pogreške. Dakle, kada se izgubi razlomački dio, izrazi se mogu tumačiti kao jednaki, iako će se zapravo jedan od drugog razlikovati. (iako u malom iznosu).

Primjeri:

Dim Moj rezultat, Var1, Var2
Moj rezultat = (45< 35) " Će se vratiti lažno.
Moj rezultat = (45 = 45) " Će se vratiti Pravi.
Moj rezultat = (4<> 3) " Će se vratiti Pravi.
Moj rezultat = ("5" > "4") " Će se vratiti Pravi.

Var1 = "5": Var2 = 4 " u VB-u možete koristiti dvotačku,
" za odvajanje izjava.

MyResult = (Var1 > Var2) " Će se vratiti Pravi.

Var1 = 5: Var2 = Prazan
MyResult = (Var1 > Var2) " Će se vratiti Pravi.

Var1 = 0: Var2 = Prazan
Moj rezultat = (Var1 = Var2) " Će se vratiti Pravi.

operator usporedbe Is

Ovaj se operator koristi za usporedbu varijabli objekta.

Sintaksa ovog operatora data je gore.

Bilješke:

Ako se object1 i object1 odnose na isti objekt, tada je rezultat True, ako nije, tada je False. Dvije varijable mogu se odnositi na isti objekt na više od jednog načina. U sljedećem primjeru A se odnosi na isti objekt kao B:

Postavite A = B

Sljedeći primjer čini da se varijable A i B odnose na isti objekt - C:

Postavite A = C
Postavite B=C

Primjeri:

Dim MyObject, YourObject, ThisObject, _
Drugi objekt, taj objekt, moj ček

Postavite YourObject = MyObject "stvoriti veze na objekte
Postavite ThisObject = MyObject
Postavite Taj Objekt = Drugi Objekt
MyCheck = YourObject Is ThisObject " Vraća True.
MyCheck = ThatObject Is ThisObject " Vraća False.
" Pretpostavljamo da MyObject<>Drugi objekt
MyCheck = MyObject Is ThatObject " Vraća False.

operator usporedbe nizova - Like

Operator usporedbe nizova Like koristi se za usporedbu nizova.

O sintaksi ovog operatora već je bilo riječi gore.

Komentar:

Ovaj se operator može koristiti za testiranje niza u odnosu na masku uzorka. Ovo je vrlo moćan operator, gotovo analogan regularni izrazi u Perlu.

Dakle, ovaj operator radi na sljedeći način. Ako niz odgovara maski, tada je rezultat True. Ako nije - False. Ako je jedan od izraza Null, rezultat je također Null.

Ponašanje operatora Like ovisi o zadanoj vrsti usporedbe niza. (Opcija operatora za usporedbu).

Ako je vrsta postavljena na Binarno (tj. binarna usporedba), nizovi se uspoređuju prema svojim Ascii kodovima (različit je u različitim kodovima). Obično se koristi sljedeći niz:

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

Ako je vrsta postavljena na Tekst (usporedba teksta). Ovom usporedbom niz se razlikuje od prethodnog, ovdje su velika i mala slova jednaka:

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

Najviše glavna funkcija Like operator je provjera da li niz pripada maski. U maski se mogu koristiti sljedeći posebni sastojci. likovi:

Bilo koji pojedinačni znak
* Nula ili više znakova
# Bilo koji broj (0–9).
Svaki pojedinačni znak koji padne na popis znakova
[!charlist] Svaki pojedinačni znak koji nije uključen u popis znakova

Kratka napomena. Kako bismo provjerili identitet niza na maski koja sadrži poseban. simbola (tj. provjerite, na primjer, da li niz sadrži simbole [,?,#,],*), tada trebate zaključiti iz uglate zagrade. Ne možete samo tako staviti zasebnu zagradu [ ili ].

Kada navodite popis znakova, možete koristiti crticu (–). Na primjer, da biste odredili slijed od A do Z, morate koristiti masku. Sve u zagradama ne smije sadržavati nikakve graničnike (razmake, zareze itd.), inače će i oni biti uključeni u niz.

Postoje i druga važna pravila prilikom provjere pomoću maske:

  • Znak (!) na početku popisa simbola označava da morate tražiti simbole koji nisu uključeni u ovaj popis. Ako trebate pronaći sam znak!, onda morate staviti zagrade [!].
  • (–) koristi se za određivanje niza znakova.
  • Kada je naveden raspon znakova, mora se povećavati u ASCII kodovima. Oni. pravu masku ili ne.
  • Niz se tumači kao prazan niz "".

Primjeri:

Dim Moj ček
MyCheck = "aBBBa" Kao "a*a" " Vraća True.
MyCheck = "F" Kao "" " Vraća True.
MyCheck = "F" Kao "[!A-Z]" " Vraća False.
MyCheck = "a2a" Kao "a#a" " Vraća True.
MyCheck = "aM5b" Kao "a#[!c-e]" " Vraća True.
MyCheck = "BAT123khg" Kao "B?T*" " Vraća True.
MyCheck = "CAT123khg" Kao "B?T*" " Vraća False.

myString = "312T-87GD-8922"

Ako myString Kao "###-##-####" Onda...

Operatori za ulančavanje nizova

Zapravo, za ulančavanje nizova u Visual Basicu, možete koristiti samo 2 operatora. Ovo su & i +. Operator + opisan je gore. Razgovarajmo o operatoru &.

operator ulančavanja nizova - &

Koristi se za spajanje dva izraza.

Sintaksa:

proizlaziti = izraz1 & izraz2

proizlaziti potreban; Bilo koja varijabla String ili Variant
izraz1 Obavezno; Bilo kakav izraz
izraz2 Obavezno; Bilo kakav izraz

Bilješke:

Ako izraz nije niz, tada se pretvara u varijantu niza. Tip podataka rezultata je String samo kada su oba izraza tipa String. U suprotnom rezultat je String Variant. Ako su oba izraza Null, tada je i rezultat Null. Međutim, ako samo jedan od izraza sadrži Null vrijednost, tada se tumači kao prazan niz "". Empty se također tumači kao prazan niz "".

Primjeri:

Dim MyStr
MyStr = "Zdravo" & "Svijete"
" Će se vratiti niz "Hello World".
MyStr = "Provjeri" & 123 & "Provjeri"
" Vraća niz "CHECK 123 CHECK".

Logički operatori

Ovo je najzanimljivija skupina operatera. Pri programiranju morate poznavati njihov rad i primjenu (i to ne samo u Visual Basicu).

U Visual Basicu ih ima 6. Pogledajmo detaljnije svakog operatera.

I operater

Koristi se za izvođenje logičkog množenja preko dva izraza.

Sintaksa:

proizlaziti = izraz1 I izraz2

proizlaziti
izraz1 Obavezno; Bilo kakav izraz
izraz2 Obavezno; Bilo kakav izraz

Bilješke:

Sljedeća tablica prikazuje kako funkcionira operator And:

Ako je izraz1 =

, a izraz2 =

Tada je rezultat =

Pravi Pravi Pravi
Pravi lažno lažno
Pravi Null Null
lažno Pravi lažno
lažno lažno lažno
lažno Null lažno
Null Pravi Null
Null lažno lažno
Null Null Null

And operator se također koristi za testiranje bitova broja. Za bitove, And operator radi na sljedeći način (gledano s lijeva na desno)

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

Primjeri:

Dim A, B, C, D, MyCheck
MyCheck = A > B i B > C " Će se vratiti Pravi.
MyCheck = B > A i B > C " Će se vratiti lažno.
MyCheck = A > B i B > D " Će se vratiti Null.
MyCheck = A i B " Će se vratiti8 (usporedba bitova).

Pogledajmo posljednji primjer detaljnije. Broj 10 predstavljen je kao bitovi na sljedeći način (kao tetrada, tj. 4 bita):

A broj 8 je ovakav:

Kao rezultat operatora And, prema gornjoj tablici, dobivamo:

Oni. 8. Zašto smo to učinili? Ovo smo učinili da provjerimo je li četvrti bit broja A postavljen? Nakon što smo primili B, potvrdili smo da je ovaj bit postavljen.

Ili operater

Koristi se za izvođenje logičkog zbrajanja dvaju izraza.

Sintaksa:

proizlaziti = izraz1 Ili izraz2

proizlaziti potreban; Bilo koja numerička (uključujući Booleovu) varijablu
izraz1 Obavezno; Bilo kakav izraz
izraz2 Obavezno; Bilo kakav izraz

Bilješke:

Sljedeća tablica prikazuje kako funkcionira operator Or:

Ako je izraz1 =

, a izraz2 =

Tada je rezultat =

Pravi Pravi Pravi
Pravi lažno Pravi
Pravi Null Pravi
lažno Pravi Pravi
lažno lažno lažno
lažno Null Null
Null Pravi Pravi
Null lažno Null
Null Null Null

Operator Or koristi se za postavljanje određenih bitova broja. Za bitove, operator Or radi na sljedeći način (gledano s lijeva na desno)

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

Rezultat je istaknut podebljano.

Primjeri:

Dim A, B, C, D, MyCheck
MyCheck = A > B Ili B > C " Će se vratiti Pravi.
MyCheck = B > A Ili B > C " Će se vratiti Pravi.
MyCheck = A > B Ili B > D " Će se vratiti Pravi.
MyCheck = B > D Ili B > A " Će se vratiti Null.
MyCheck=A ili 5" Će se vratiti 15:

Pogledajmo posljednji primjer detaljnije. Broj 10 predstavljen je kao bitovi na sljedeći način (kao tetrada, tj. 4 bita):

I broj 5:

Kao rezultat rada operatora Or, prema gornjoj tablici, dobivamo:

Oni. 15. Kao što vidite, operator Or je vrlo jednostavan i praktičan za korištenje ne samo u izrazima za usporedbu, već i za postavljanje određenih bitova broja.

Xor operator

Koristi se za izvođenje logičke negacije dvaju izraza.

Sintaksa:

proizlaziti = izraz1 Xor izraz2

proizlaziti potreban; Bilo koja numerička (uključujući Booleovu) varijablu
izraz1 Obavezno; Bilo kakav izraz
izraz2 Obavezno; Bilo kakav izraz

Bilješke:

Sljedeća tablica pokazuje kako radi operator Xor:

Operator Xor koristi se za invertiranje određenih bitova broja. Za bitove, Xor operator radi na sljedeći način (gledano s lijeva na desno)

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

Rezultat je podebljan. Xor se razlikuje od Ora samo po tome što kada su oba bita jedinice, Xor proizvodi 0. Zanimljivo svojstvo Xor operatora je da kada se koristi dva puta, daje isti broj. Ovo se često koristi u kriptografiji.

Primjeri:

Dim A, B, C, D, MyCheck
A = 10: B = 8: C = 6: D = nula
MyCheck = A > B Xili B > C " Će se vratiti lažno.
MyCheck = B > A X ili B > C " Će se vratiti Pravi.
MyCheck = B > A X ili C > B " Će se vratiti lažno.
MyCheck = B > D Xili A > B " Će se vratiti Null.
MyCheck = A X ili B " Će se vratiti 2

Zanimljiv primjer Operator Xor koristi se za razmjenu vrijednosti dviju numeričkih varijabli:

Dim a Dugo, b Dugo
a = 4
b = 7
a = a X ili b
b = a X ili b
a = a X ili b

Sada varijabla a sadrži vrijednost varijable b, i obrnuto.

Nije operater

Koristi se za izvođenje logičke inverzije dvaju izraza.

Sintaksa:

proizlaziti=Ne izraz

proizlaziti potreban; Bilo koja numerička (uključujući Booleovu) varijablu
izraz Obavezno; Bilo kakav izraz

Bilješke:

Sljedeća tablica pokazuje kako funkcionira operator Not:

Operator Not invertira sve bitove izrazi. Za bitove, Not operator radi na sljedeći način (gledano s lijeva na desno):

0 1
1 0

Rezultat je podebljan.

Primjeri:

Dim A, B, C, D, MyCheck
A = 10: B = 8: C = 6: D = nula
MyCheck = Nije (A > B) " Će se vratiti lažno.
MyCheck = Nije (B > A)" Će se vratiti Pravi.
MyCheck = Nije (C > D) " Će se vratiti Null.
MyCheck = Nije A " Će se vratiti-11 (svi bitovi obrnuti)

Pogledajmo pobliže posljednji primjer. Broj 10 predstavljen je kao bitovi na sljedeći način (kao bajt, tj. 8 bita):

Nakon invertiranja svih bitova dobivamo:

A ovo je -11.

Operator Eqv

Koristi se za izvođenje logičke ekvivalencije između dva izraza.

Sintaksa:

proizlaziti = izraz1 Ekv izraz2

proizlaziti potreban; Bilo koja numerička (uključujući Booleovu) varijablu
izraz1 Obavezno; Bilo kakav izraz
izraz2 Obavezno; Bilo kakav izraz

Bilješke:

Sljedeća tablica prikazuje kako funkcionira operator Eqv:

Za bitove, operator Eqv radi na sljedeći način (gledano s lijeva na desno)

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

Primjeri:

Dim A, B, C, D, MyCheck
A = 10: B = 8: C = 6: D = nula
MyCheck = A > B Eqv B > C " Će se vratiti Pravi.
MyCheck = B > A Eqv B > C " Će se vratiti lažno.
MyCheck = A > B Eqv B > D " Će se vratiti Null.
MyCheck = A Eqv B " Će se vratiti -3

Imp operator

Koristi se za izvođenje logičke implikacije dvaju izraza.

Sintaksa:

proizlaziti = izraz1 Imp izraz2

proizlaziti potreban; Bilo koja numerička (uključujući Booleovu) varijablu
izraz1 Obavezno; Bilo kakav izraz
izraz2 Obavezno; Bilo kakav izraz

Bilješke:

Sljedeća tablica prikazuje kako funkcionira Imp operator:

Ako je izraz1 =

, a izraz2 =

Tada je rezultat =

Pravi Pravi Pravi
Pravi lažno lažno
Pravi Null Null
lažno Pravi Pravi
lažno lažno Pravi
lažno Null Pravi
Null Pravi Pravi
Null lažno Null
Null Null Null

Za bitove, Imp operator radi na sljedeći način (gledano slijeva na desno)

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

Primjeri:

Dim A, B, C, D, MyCheck
A = 10: B = 8: C = 6: D = nula
MyCheck = A > B Imp B > C " Će se vratiti Pravi.
MyCheck = A > B Imp C > B " Će se vratiti lažno.
MyCheck = B > A Imp C > B " Će se vratiti Pravi.
MyCheck = B > A Imp C > D " Će se vratiti Pravi.
MyCheck = C > D Imp B > A " Će se vratiti Null.
MyCheck = B Imp A " Povratak -1