Confronto VBA Operatori: Non uguali, Less maggiore o uguale a
⚡ Riepilogo intelligente
Confronto VBA OperaGli operatori confrontano un valore con un altro e restituiscono Vero o Falso. Questa pagina definisce i sei operatori, li mostra all'interno di un'istruzione If, spiega come vengono confrontati testo e date ed elenca gli errori che producono risultati errati.

Confronto VBA OperaTors
Si tratta di operatori utilizzati per confrontare i valori. Gli operatori di confronto includono uguale a, minore di, maggiore di e diverso da.
Gli operatori di confronto vengono utilizzati per confrontare i valori a scopo di convalida. Supponiamo che tu stia sviluppandoping Una semplice applicazione per punti vendita. In questa applicazione, è necessario convalidare i valori inseriti prima di registrarli. In questi casi, è possibile utilizzare gli operatori di confronto. Questo operatore verifica la presenza di numeri negativi o si assicura che l'importo pagato non superi l'importo fatturato. Gli operatori di confronto risultano utili in situazioni di questo tipo.
Ogni confronto restituisce uno di due valori, Vero o Falso, e mai un numero. È su questo risultato che agisce un'istruzione If.
Nella tabella seguente sono elencati gli operatori di confronto definiti in VBA.
| Operator | Descrizione |
|---|---|
| = | Uguale: controlla se due valori sono uguali. Viene utilizzato anche come operatore di assegnazione |
| < | Less than: verifica se il valore a sinistra è minore del valore a destra |
| > | Maggiore di: verifica se il valore a sinistra è maggiore del valore a destra |
| <> | Diverso da: verifica se due valori sono diversi tra loro |
| <= | Less minore o uguale a: verifica se il valore a sinistra è minore o uguale al valore a destra |
| >= | Maggiore o uguale a: verifica se il valore a sinistra è maggiore o uguale al valore a destra. |
Vedere ciascun operatore applicato a due variabili rende più facile prevedere il risultato ottenuto.
Confronto VBA Operatori con l'esempio
La tabella seguente mostra il confronto VBA di Excel Operatori con esempi e risultati.
| S / N | Operator | Esempio | Uscita |
|---|---|---|---|
| 1 | = | Se x = z Allora | Restituisce vero se sono uguali, altrimenti restituisce falso |
| 2 | < | Se x < z Allora | Restituisce vero se x è minore di z, altrimenti restituisce falso |
| 3 | > | Se x > z Allora | Restituisce vero se x è maggiore di z, altrimenti restituisce falso |
| 4 | <> | Se x <> z Allora | Restituisce vero se non sono uguali, altrimenti restituisce falso |
| 5 | <= | Se x <= z Allora | Restituisce vero se x è minore o uguale a z, altrimenti restituisce falso |
| 6 | >= | Se x >= z Allora | Restituisce vero se x è maggiore o uguale a z, altrimenti restituisce falso |
Esempio di codice sorgente
Confronto paritario Operator
If 2 = 1 Then MsgBox "True", vbOKOnly, "Equal Operator" Else MsgBox "False", vbOKOnly, "Equal Operator" End If
QUI,
- “Se 2 = 1 Allora… Altrimenti… Fine se” utilizza l'istruzione if per valutare la condizione “2 = 1”
- “MonsBox... " È una funzione integrata che visualizza una finestra di messaggio.
- Il primo parametro "True" o "False" è ciò che verrà visualizzato nella casella del messaggio. Nel nostro esempio, 2 non è uguale a 1, quindi, verrà visualizzato "false" nella casella del messaggio.
- Il secondo parametro “vbOKOnly” è il pulsante che viene visualizzato nella finestra del messaggio
- Il terzo parametro “Uguale Opera"tor" è il titolo della casella del messaggio.
L'esecuzione del codice sopra riportato fornisce i seguenti risultati
Quel singolo test è la forma più semplice. Le macro reali combinano confronti e si ramificano tra diversi risultati.
Come utilizzare il confronto Operatori in un'istruzione If
Un operatore di confronto è raramente utile da solo. Il suo risultato, Vero o Falso, viene passato a una struttura decisionale, e l'istruzione If è quella che userete più spesso. L'esempio seguente valuta un punteggio contenuto nella cella A1 e ne scrive il risultato accanto.
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
La macro legge il punteggio una volta, poi lo confronta con tre condizioni in sequenza. Quattro punti spiegano il motivo di questo comportamento.
- L'ordine è importante: VBA si ferma al primo ramo che restituisce True. Posizionamento Punteggio >= 50 prima Punteggio >= 90 avrebbe etichettato ogni punteggio elevato come superato.
- Altrimenti è la parola chiave: Qualsiasi valore che non superi tutti i test precedenti passa alla condizione Else, quindi nessun input rimane senza gestione.
- Nessun collegamento a catena: VBA non può leggere 0 <= Punteggio <= 100. Scrivi Se Punteggio >= 0 e Punteggio <= 100 allora usando il operatori logici anziché.
- Stesso test, altre strutture: La stessa condizione si applica a Do While e Select Case, quindi gli operatori vengono applicati a ogni ciclo che scrivi.
Suggerimento: Dichiarare la variabile con un tipo numerico, come mostrato con Punteggio basso fino a. Se il valore rimane una Variant contenente testo, “9” > “10” Restituisce True perché il confronto viene effettuato carattere per carattere.
Confronto tra testo e date in VBA
Numbers Il confronto è preciso come suggerisce l'aritmetica, ma il testo e le date seguono regole proprie, e entrambi sorprendono i principianti.
Le stringhe vengono confrontate un carattere alla volta utilizzando la loro posizione di ordinamento, quindi "Apple" < "Banana" restituisce True. Per impostazione predefinita il confronto è sensibile alle maiuscole/minuscole, il che significa "guru99" = "Guru99” restituisce False. Posizionamento Opzione Confronta testo All'inizio del modulo, ogni confronto tra stringhe in quel modulo ignora la distinzione tra maiuscole e minuscole. Per un singolo test senza modificare il modulo, utilizzare StrComp con l'argomento vbTextCompare.
Le date vengono memorizzate come numeri seriali contati a partire dal 30 dicembre 1899, quindi vengono confrontate direttamente con gli stessi sei operatori. Scrittura Se la data di scadenza è inferiore alla data, allora Rileva correttamente un elemento scaduto, perché Date restituisce la data di sistema corrente come un numero seriale. L'unico problema è una data memorizzata come testo: "01/02/2026" letto da un file importato è una stringa, non una data, e viene confrontato alfabeticamente. Convertilo con CDate prima di testarlo.
Conoscere le regole per ogni tipologia elimina la maggior parte delle sorprese, ma alcuni errori possono comunque cogliere di sorpresa anche gli sviluppatori più esperti.
Errori comuni nel confronto di valori in VBA
I cinque problemi seguenti rappresentano la maggior parte dei confronti che restituiscono un risultato inatteso.
- Compito scambiato per confronto: Al di fuori di una condizione, x = 5 memorizza 5 in x. All'interno dell'istruzione If, gli stessi simboli verificano l'uguaglianza. VBA non ha un operatore == separato, quindi leggi attentamente il contesto.
- Collaudo Double valori per l'uguaglianza esatta: La precisione memorizzata significa che 0.1 + 0.2 = 0.3 restituisce False. Confronta invece la differenza arrotondata, ad esempio Se Abs(a – b) < 0.000001 Allora.
- Confrontare qualsiasi cosa con Null: Null non è uguale a niente, nemmeno a un altro Null. Esegui il test con IsNull invece di = Null.
- Confronto tra testo e numero: Una cella contenente il testo “100” non equivale al numero 100. Convertire con CLng o CDbl prima del test.
- Lettura di .Text anziché di .Value: La proprietà .Text restituisce il testo visualizzato, troncato in base alla larghezza della colonna e alla formattazione. Confrontare sempre con .Value.
Scarica il file Excel qui sopra Code

