Comparație VBA Operatori: nu sunt egali, Less decât sau Egal cu
⚡ Rezumat inteligent
Comparație VBA OperaOperatorii testează o valoare față de alta și returnează True sau False. Această pagină definește cei șase operatori, îi prezintă în interiorul unei instrucțiuni If, explică modul în care sunt comparate textul și datele și listează greșelile care produc rezultate greșite.

Comparație VBA Operatori
Aceștia sunt operatori utilizați pentru a compara valori. Operatorii de comparație includ egal cu, mai mic decât, mai mare decât și diferit de.
Operatorii de comparație sunt utilizați pentru a compara valori în scopuri de validare. Să presupunem că sunteți dezvoltatping o aplicație simplă pentru punct de vânzare. În această aplicație, doriți să validați valorile introduse înainte de a le posta. În astfel de cazuri, puteți utiliza operatori de comparație. Acești operatori vor verifica în raport cu numerele negative sau se vor asigura că suma plătită nu depășește suma facturată. Operatorii de comparație sunt utili în astfel de situații.
Fiecare comparație returnează una dintre cele două valori, Adevărat sau Fals, și niciodată un număr. Acest rezultat este ceea ce definește o instrucțiune If.
Următorul tabel listează operatorii de comparație definiți în VBA.
| OperaTdR | Descriere |
|---|---|
| = | Egal: verifică dacă două valori sunt egale. De asemenea, este folosit ca operator de atribuire |
| < | Less decât: verifică dacă valoarea din stânga este mai mică decât valoarea din dreapta |
| > | Mai mare decât: verifică dacă valoarea din stânga este mai mare decât valoarea din dreapta |
| <> | Nu este egal cu: verifică dacă două valori sunt diferite una de cealaltă |
| <= | Less decât sau egal cu: verifică dacă valoarea din stânga este mai mică sau aceeași cu valoarea din dreapta |
| >= | Mai mare sau egal cu: verifică dacă valoarea din stânga este mai mare sau egală cu valoarea din dreapta |
Faptul că fiecare operator este aplicat la două variabile face ca rezultatul returnat să fie mai ușor de prezis.
Comparație VBA Operators cu Exemplu
Următorul tabel arată comparația Excel VBA Operatori cu exemple și rezultate.
| S / N | OperaTdR | Exemplu | producție |
|---|---|---|---|
| 1 | = | Dacă x = z Atunci | Returnează adevărat dacă sunt egale, altfel returnează false |
| 2 | < | Dacă x < z Atunci | Returnează adevărat dacă x este mai mic decât z, altfel returnează fals |
| 3 | > | Dacă x > z Atunci | Returnează adevărat dacă x este mai mare decât z, altfel returnează fals |
| 4 | <> | Dacă x <> z Atunci | Returnează adevărat dacă nu sunt egale, altfel returnează false |
| 5 | <= | Dacă x <= z Atunci | Returnează adevărat dacă x este mai mic sau egal cu z, altfel returnează fals |
| 6 | >= | Dacă x >= z, atunci | Returnează adevărat dacă x este mai mare sau egal cu z, altfel returnează fals |
Exemplu de cod sursă
Comparație egală OperaTdR
If 2 = 1 Then MsgBox "True", vbOKOnly, "Equal Operator" Else MsgBox "False", vbOKOnly, "Equal Operator" End If
AICI,
- „Dacă 2 = 1 atunci... Altfel... Încheiați dacă” folosește instrucțiunea if pentru a evalua condiția „2 = 1”
- „MsgBox... " Este o funcție încorporată care afișează o casetă de mesaj.
- Primul parametru „Adevărat” sau „Fals” este ceea ce va fi afișat în caseta de mesaj. În exemplul nostru, 2 nu este egal cu 1, prin urmare, va afișa „false” în caseta de mesaje.
- Al doilea parametru „vbOKOnly” este butonul care este afișat în caseta de mesaj
- Al treilea parametru „Egal Operator” este titlul casetei de mesaje.
Executarea codului de mai sus dă următoarele rezultate
Acel test singular este cea mai simplă formă. Macrocomenzile reale combină comparații și se ramifică între mai multe rezultate.
Cum se utilizează comparația Operatori într-o instrucțiune If
Un operator de comparație este rareori util de unul singur. Rezultatul său Adevărat sau Fals este introdus într-o structură de decizie, iar instrucțiunea Dacă este cea pe care o veți utiliza cel mai des. Exemplul de mai jos notează un scor păstrat în celula A1 și scrie rezultatul lângă acesta.
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
Macrocomanda citește scorul o dată, apoi îl testează în funcție de trei condiții, în ordine. Patru puncte explică de ce se comportă așa cum se comportă.
- Ordinea contează: VBA se oprește la prima ramură care returnează True. Plasarea Scor >= 50 înainte Scor >= 90 ar eticheta fiecare scor mare drept o reușită.
- Altfel este termenul generic: Orice valoare care eșuează la fiecare test anterior trece în Else, deci nicio intrare nu rămâne negestionată.
- Fără înlănțuire: VBA nu poate citi 0 <= Scor <= 100. Scrie Dacă scorul >= 0 și scorul <= 100, atunci folosind operatori logici in schimb.
- Același test, alte structuri: Condiția identică determină operatorii Do While și Select Case, astfel încât operatorii se transferă la fiecare buclă pe care o scrieți.
💡 Sfat: Declarați variabila cu un tip numeric, așa cum se arată cu Scor Dim atâta timp câtDacă valoarea rămâne o variantă care conține text, „9” > „10” returnează True deoarece comparația se face caracter cu caracter.
Compararea textului și a datelor în VBA
Numbers compară exact așa cum sugerează aritmetica, dar textul și datele își urmează propriile reguli și ambele îi surprind pe începători.
Șirurile de caractere sunt comparate câte un caracter pe rând, folosind poziția lor de sortare, deci „Mere” < „Banană” returnează True. În mod implicit, comparația este sensibilă la majuscule/minuscule, ceea ce înseamnă „guru99” = „Guru99” returnează False. Plasarea Opțiunea Compara text din partea de sus a modulului ignoră majusculele și minusculele fiecărei comparații de șiruri din modulul respectiv. Pentru un singur test fără a modifica modulul, utilizați StrComp cu argumentul vbTextCompare.
Datele sunt stocate ca numere de serie, numărate începând cu 30 decembrie 1899, astfel încât se compară direct cu aceiași șase operatori. Scrierea Dacă DataScadenței < Dată, atunci detectează corect un element restant, deoarece Date returnează data curentă a sistemului ca același tip de număr de serie. Singura capcană este o dată păstrată ca text: „01/02/2026” citită dintr-un fișier importat este un șir de caractere, nu o dată și se compară alfabetic. Convertiți-o cu CDate înainte de a o testa.
Cunoașterea regulilor pentru fiecare tip elimină majoritatea surprizelor, dar câteva erori îi prind totuși pe dezvoltatorii experimentați.
Greșeli frecvente la compararea valorilor în VBA
Cele cinci probleme de mai jos explică majoritatea comparațiilor care returnează un rezultat neașteptat.
- Sarcină confundată cu comparația: În afara unei condiții, x = 5 stochează 5 în x. În interiorul If, aceleași simboluri testează egalitatea. VBA nu are un operator == separat, așa că citește cu atenție contextul.
- Testarea Double valori pentru egalitate exactă: Precizia stocată înseamnă că 0.1 + 0.2 = 0.3 returnează False. Comparați în schimb diferența rotunjită, de exemplu. Dacă Abs(a – b) < 0.000001, atunci.
- Comparând orice cu Null: Null nu este egal cu nimic, nici măcar cu un alt Null. Testați cu IsNull în loc de = Null.
- Compararea textului cu un număr: O celulă care conține „100” ca text nu este egală cu numărul 100. Convertiți cu CLng sau CDbl înainte de test.
- Citirea unui fișier .Text în loc de .Value: Proprietatea .Text returnează ceea ce este afișat, trunchiat în funcție de lățimea coloanei și de formatare. Comparați întotdeauna .Value.
Descărcați fișierul Excel de mai sus Code

