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: