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.

  • ⚖️ Svrha: Operatori usporedbe validiraju podatke testiranjem uvjeta koji se procjenjuje kao True ili False.
  • 🔢 Šest Operatorovi: Jednako, manje od, veće od, nije jednako, manje ili jednako i veće ili jednako.
  • 🔁 Dvostruka uloga: Znak jednakosti uspoređuje unutar uvjeta i dodjeljuje vrijednost izvan uvjeta.
  • 🧪 Ako izjava: Svaka usporedba se smješta unutar If, ElseIf ili Do While kako bi se kontroliralo koji se kod izvršava.
  • 🔤 Tekst i datumi: Nizovi znakova uspoređuju znak po znak, a datumi se uspoređuju kao serijski brojevi.
  • ⚠️ Precizna zamka: Dva Double Vrijednosti koje izgledaju identično mogu proći test jednakosti, stoga usporedite zaokruženu razliku.

VBA usporedba Operaulagatelji

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

Jednak Operahumka

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.

Preuzmite gornji Excel Code

Pitanja i odgovori

Ne. VBA prvu usporedbu procjenjuje na True ili False, a zatim taj rezultat uspoređuje s 10, što daje varljiv odgovor. Napišite dva testa odvojeno i spojite ih s And.

Like uspoređuje niz s uzorkom, a ne s točnom vrijednošću. Zamjenski znakovi uključuju zvjezdicu za bilo koji znak i upitnik za jedan znak, pa tako "Guru99” Kao “Guru*” vraća True.

Koristite operator Is, kao u Ako ws nije ništa, onda. Znak jednakosti uspoređuje vrijednosti, dok Is provjerava pokazuju li dvije varijable objekta na isti objekt, što je jedini valjani test za objekte.

Da. Opišite pravilo jednostavnim riječima, poput označite bilo koju narudžbu iznad 500 postavljenu prije danas, a AI asistent vraća odgovarajući If uvjet. Provjerite granične vrijednosti prije nego što mu vjerujete.

Da. Zalijepite If blok i AI asistenta trackoja grana hvata svaku vrijednost, a zatim ukazuje na nedostižan ElseIf ili usporedbu između teksta i broja. Potvrdite ispravak korak po korakping putem koda.

Sažmite ovu objavu uz: