VBA usporedba Operatorovi: Nije jednako, Less nego ili Jednako
โก Pametni saลพetak
VBA usporedba OperaOperatori usporeฤuju jednu vrijednost s drugom i vraฤaju True ili False. Ova stranica definira ลกest operatora, prikazuje ih unutar If naredbe, objaลกnjava kako se usporeฤuju tekst i datumi te navodi pogreลกke koje daju pogreลกne rezultate.

VBA usporedba Operaulagatelji
To su operatori koji se koriste za usporedbu vrijednosti. Operatori usporedbe ukljuฤuju jednako, manje od, veฤe od i nije jednako.
Operatori usporedbe koriste se za usporedbu vrijednosti u svrhu validacije. Recimo da ste developerping jednostavna aplikacija za prodajno mjesto. U ovoj aplikaciji ลพelite provjeriti unesene vrijednosti prije knjiลพenja. U takvim sluฤajevima moลพete koristiti operatore usporedbe. Ovaj operator ฤe provjeriti negativne brojeve ili osigurati da plaฤeni iznos ne prelazi naplaฤeni iznos. Operatori usporedbe dobro doฤu u takvim situacijama.
Svaka usporedba vraฤa jednu od dvije vrijednosti, True ili False, a nikada broj. Taj rezultat je ono na ลกto djeluje If naredba.
Sljedeฤa tablica navodi operatore usporedbe definirane u VBA.
| Operahumka | Description |
|---|---|
| = | Jednako: provjerava jesu li dvije vrijednosti jednake. Takoฤer se koristi kao operator dodjele |
| < | Less nego: provjerava je li vrijednost s lijeve strane manja od vrijednosti s desne strane |
| > | Veฤe od: provjerava je li vrijednost s lijeve strane veฤa od vrijednosti s desne strane |
| <> | Nije jednako: provjerava jesu li dvije vrijednosti razliฤite jedna od druge |
| <= | Less nego ili jednako: provjerava je li vrijednost s lijeve strane manja ili ista kao vrijednost s desne strane |
| >= | Veฤe ili jednako: provjerava je li vrijednost s lijeve strane veฤa ili ista kao vrijednost s desne strane |
Primjena svakog operatora na dvije varijable olakลกava predviฤanje vraฤenog rezultata.
VBA usporedba Operatorovima s Primjerom
Sljedeฤa tablica prikazuje Excel VBA usporedbu Operatorovi s primjerima i izlazom.
| S / N | Operahumka | Primjer | Izlaz |
|---|---|---|---|
| 1 | = | Ako je x = z Tada | Vraฤa true ako su jednaki, inaฤe vraฤa false |
| 2 | < | Ako je x < z Tada | Vraฤa true ako je x manje od z, inaฤe vraฤa false |
| 3 | > | Ako je x > z Tada | Vraฤa true ako je x veฤe od z, inaฤe vraฤa false |
| 4 | <> | Ako je x <> z Tada | Vraฤa true ako nisu jednaki, inaฤe vraฤa false |
| 5 | <= | Ako je x <= z Tada | Vraฤa true ako je x manje od ili jednako z, inaฤe vraฤa false |
| 6 | >= | Ako x >= z, onda | Vraฤa true ako je x veฤe ili jednako z, inaฤe vraฤa false |
Primjer izvornog koda
Jednaka usporedba Operahumka
If 2 = 1 Then MsgBox "True", vbOKOnly, "Equal Operator" Else MsgBox "False", vbOKOnly, "Equal Operator" End If
OVDJE,
- "Ako je 2 = 1 onda... Inaฤe... Kraj ako" koristi if naredbu za procjenu uvjeta "2 = 1"
- โMsgBox...โ To je ugraฤena funkcija koja prikazuje okvir s porukom.
- Prvi parametar "True" ili "False" je ono ลกto ฤe biti prikazano u okviru s porukom. U naลกem primjeru, 2 nije jednako 1, stoga ฤe se prikazati "false" u okviru poruke.
- Drugi parametar โvbOKOnlyโ je gumb koji se prikazuje u okviru s porukom
- Treฤi parametar โEqual Operatorโ je naslov okvira s porukom.
Izvrลกenje gornjeg koda daje sljedeฤe rezultate
Taj pojedinaฤni test je najjednostavniji oblik. Pravi makroi kombiniraju usporedbe i granaju se izmeฤu nekoliko ishoda.
Kako koristiti usporedbu Operatori u IF naredbi
Operator usporedbe rijetko je koristan sam po sebi. Njegov rezultat True ili False unosi se u strukturu odluฤivanja, a naredba If je ona koju ฤete najฤeลกฤe koristiti. Primjer u nastavku ocjenjuje rezultat koji se nalazi u ฤeliji A1 i zapisuje rezultat pored njega.
Sub GradeScore() Dim Score As Long Score = Sheet1.Range("A1").Value If Score >= 90 Then Sheet1.Range("B1").Value = "Distinction" ElseIf Score >= 50 Then Sheet1.Range("B1").Value = "Pass" ElseIf Score < 0 Then MsgBox "A score cannot be negative", vbCritical, "Invalid Entry" Else Sheet1.Range("B1").Value = "Fail" End If End Sub
Makro jednom ฤita rezultat, a zatim ga redom testira u odnosu na tri uvjeta. ฤetiri toฤke objaลกnjavaju zaลกto se ponaลกa onako kako se ponaลกa.
- Redoslijed je vaลพan: VBA se zaustavlja na prvoj grani koja vraฤa True. Rezultat >= 50 prije Rezultat >= 90 svaki bi visoki rezultat oznaฤio kao prolaz.
- Inaฤe je sve u redu: Svaka vrijednost koja ne proฤe nijedan prethodni test prelazi na Else, tako da nijedan ulaz ne ostaje neobraฤen.
- Bez lanฤanog povezivanja: VBA ne moลพe ฤitati 0 <= Rezultat <= 100Napiลกi Ako je rezultat >= 0 i rezultat <= 100, onda pomoฤu logiฤki operatori umjesto.
- Isti test, druge strukture: Identiฤan uvjet pokreฤe Do While i Select Case, pa se operatori prenose u svaku petlju koju napiลกete.
๐ก Savjet: Deklarirajte varijablu numeriฤkog tipa, kao ลกto je prikazano na Dim Score sve dokAko vrijednost ostane Varianta koja sadrลพi tekst, โ9โ > โ10โ vraฤa True jer se usporedba vrลกi znak po znak.
Usporeฤivanje teksta i datuma u VBA
Numbers usporeฤujte toฤno onako kako aritmetika sugerira, ali tekst i datumi slijede svoja pravila i oboje iznenaฤuje poฤetnike.
Nizovi se usporeฤuju znak po znak koristeฤi njihov poloลพaj sortiranja, pa "Apple" < "Banana" vraฤa True. Prema zadanim postavkama, usporedba razlikuje velika i mala slova, ลกto znaฤi "guru99" = "Guru99โ vraฤa False. Postavljanje Opcija Usporedi tekst na vrhu modula ฤini da svaka usporedba stringova u tom modulu ignorira velika i mala slova. Za jedan test bez promjene modula, koristite StrComp s argumentom vbTextCompare.
Datumi se pohranjuju kao serijski brojevi od 30. prosinca 1899., tako da se izravno usporeฤuju s istih ลกest operatora. Pisanje Ako je DatumDospijeฤa < DatumOnda ispravno detektira dospjelu stavku jer Date vraฤa trenutni sistemski datum kao istu vrstu serijskog broja. Jedina zamka je datum koji se ฤuva kao tekst: "01/02/2026" proฤitan iz uvezene datoteke je niz znakova, a ne datum, i usporeฤuje se abecednim redom. Pretvorite ga s CDate prije testiranja.
Poznavanje pravila za svaku vrstu uklanja veฤinu iznenaฤenja, ali nekoliko pogreลกaka ipak moลพe uhvatiti iskusne programere.
Uobiฤajene pogreลกke pri usporedbi vrijednosti u VBA-i
Pet problema u nastavku objaลกnjava veฤinu usporedbi koje vraฤaju neoฤekivani rezultat.
- Zadatak pogreลกno odabran za usporedbu: Izvan uvjeta, x = 5 pohranjuje 5 u x. Unutar If-a, isti simboli provjeravaju jednakost. VBA nema zaseban operator ==, stoga paลพljivo proฤitajte kontekst.
- Ispitivanje Double vrijednosti za toฤnu jednakost: Pohranjena preciznost znaฤi da 0.1 + 0.2 = 0.3 vraฤa False. Umjesto toga, usporedite zaokruลพenu razliku, na primjer. Ako je Abs(a โ b) < 0.000001, tada.
- Usporeฤivanje bilo ฤega s Null-om: Null nije jednak niฤemu, ฤak ni drugom Nullu. Testirajte s IsNull umjesto = Nula.
- Usporeฤivanje teksta s brojem: ฤelija koja sadrลพi tekst "100" nije jednaka broju 100. Pretvorite s CLng ili CDbl prije testa.
- ฤitanje .Text umjesto .Value: Svojstvo .Text vraฤa ono ลกto je prikazano, ลกto je skraฤeno za ลกirinu stupca i formatiranje. Uvijek usporedi .Value.

