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.

  • ️ Scopo: Gli operatori di confronto convalidano i dati verificando una condizione che restituisce Vero o Falso.
  • 🔢 Sei Operatori: Uguale, minore di, maggiore di, diverso da, minore o uguale a e maggiore o uguale a.
  • 🔁 Doppio ruolo: Il segno di uguale confronta i valori all'interno di una condizione e assegna un valore all'esterno.
  • 🧪 Istruzione condizionale: Ogni confronto è inserito all'interno di un'istruzione If, ​​ElseIf o Do While per controllare quale codice viene eseguito.
  • 🔤 Testo e date: Le stringhe vengono confrontate carattere per carattere, mentre le date vengono confrontate come numeri seriali.
  • ⚠️ Trappola di precisione: Due Double Valori apparentemente identici possono non superare un test di uguaglianza, quindi è meglio confrontare una differenza arrotondata.

Confronto VBA OperaTors

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

Pari Operator

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

DOMANDE FREQUENTI

No. VBA valuta il primo confronto come Vero o Falso, quindi confronta tale risultato con 10, il che fornisce una risposta fuorviante. Scrivi i due test separatamente e uniscili con l'operatore AND.

Like confronta una stringa con un modello piuttosto che con un valore esatto. I caratteri jolly includono l'asterisco per qualsiasi carattere e il punto interrogativo per un singolo carattere, quindi "Guru99” Mi piace “Guru*” restituisce True.

Utilizza l'operatore Is, come in If ws Is Nothing Then. Il segno di uguale confronta i valori, mentre Is verifica se due variabili oggetto puntano allo stesso oggetto, che è l'unico test valido per gli oggetti.

Sì. Descrivi la regola in parole semplici, ad esempio "segnala qualsiasi ordine superiore a 500 effettuato prima di oggi", e un assistente IA restituirà la condizione If corrispondente. Verifica i valori limite prima di fidarti.

Sì. Incolla il blocco If e un assistente IA traces quale ramo cattura ogni valore, quindi segnala un ElseIf irraggiungibile o un confronto tra testo e un numero. Conferma la correzione passo passoping attraverso il codice.

Riassumi questo post con: