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.

