Come utilizzare l'istruzione if con else in vba?

Se vuoi essere un utente VBA avanzato, un’istruzione IF è obbligatoria. E credo che tu conosca già la parola SE e la usi frequentemente come funzione del foglio di calcolo.

In VBA, IF funziona allo stesso modo. La sua idea di base è eseguire un’attività quando una condizione è VERA, altrimenti non fare nulla o fare qualcos’altro. Puoi scrivere in modo semplice e complesso.

Per motivi di comprensione l’ho diviso in tre parti diverse.

  • Fornito per essere testato.
  • Un’attività da eseguire se la condizione è VERA.
  • Un’attività da eseguire se la condizione è FALSA.

Ecco come appare nella vita reale:

utilizzando il codice dell'istruzione VBA IF in Excel

Nell’esempio sopra, la pioggia è una condizione. Se questa condizione è VERA il ragazzo aprirà l’ombrello e se la condizione è FALSA indosserà il cappello. Le condizioni sono onnipresenti nella nostra vita quotidiana. Ma ora torniamo al nostro mondo di programmazione ed esploriamolo.

Sintassi: VBA SE

Abbiamo tre diversi tipi di istruzioni IF in VBA.

1. SE-Allora

IF THEN è la forma più semplice di un’istruzione IF. Tutto quello che dobbiamo fare è specificare una condizione da verificare e se tale condizione è VERA eseguirà un’attività. Ma, se questa condizione è FALSA, non farà nulla e salterà la linea immediatamente.

Sintassi

 IF condition Then statement[s]

Nella sintassi precedente, dobbiamo specificare una condizione da valutare e un’attività da eseguire se tale condizione è VERA.

Esempio

vba if istruzione utilizzando if then codice macro

Nell’esempio sopra, abbiamo verificato che la cella A1 contenga il valore 10 e, in tal caso, l’istruzione visualizzerà una finestra di messaggio con il messaggio “La cella A1 ha il valore 10”.

 Sub CheckValue() If Range("A1").Value = 10 Then MsgBox ("Cell A1 has value 10") End Sub

2. SE-allora-altro

È possibile utilizzare l’istruzione IF-Then-Else quando si desidera eseguire un’attività specifica se una condizione è VERA e un’attività diversa se una condizione è FALSA.

Sintassi

 IF Condition Then Statement[s] Else Statement[s] End If

Con la sintassi di cui sopra, possiamo eseguire diverse attività a seconda del risultato di una condizione. Se la condizione è VERA, eseguirà l’istruzione menzionata dopo “Then” o se la condizione è FALSE, eseguirà l’istruzione menzionata dopo “Else”.

Esempio

 Sub CheckValue() If Range("A1").Value = "10" Then MsgBox ("Cell A1 has value 10") Else MsgBox ("Cell A1 has a value other than 10") End Sub
vba if istruzione utilizzando il codice macro if then else

Nell’esempio precedente ho utilizzato l’istruzione IF-Then-Else per verificare il valore nella cella A1.

Se la cella A1 ha un valore pari a 10, riceverai una finestra di messaggio che dice “La cella A1 ha un valore di 10” e se c’è un altro valore nella cella A1 riceverai una finestra di messaggio che dice “La cella A1 ha un valore diverso da 10”. Quindi qui siamo in grado di eseguire diversi compiti in base al risultato della condizione.

3. SE-Allora-Altrimenti-Altrimenti

Questo è il tipo di IF più utile e importante che ti aiuterà a scrivere istruzioni di condizione avanzate. In questo tipo è possibile specificare la seconda condizione dopo aver valutato la prima condizione.

Sintassi

 IF Condition Then Statement[s] Elseif Condition Then Statement[s] Else Statement[s] End If

Nella sintassi sopra abbiamo:

  1. A condizione di valutare.
  2. Un’istruzione da eseguire se questa condizione è TURE.
  3. Se questa condizione è FALSA allora dobbiamo valutare la seconda condizione.
  4. E, se la seconda condizione è VERA, abbiamo una dichiarazione da fare.
  5. Ma se entrambe le condizioni, la prima e la seconda, sono FALSE, verrà creata l’affermazione che hai menzionato dopo “Else”.

E la parte migliore è che puoi utilizzare un numero qualsiasi di “Elseif” nel tuo codice. Ciò significa che puoi specificare un numero qualsiasi di condizioni nella tua dichiarazione.

Esempio

vba if istruzione utilizzando il codice macro if then elseif elseif
 Sub check_grade() If Range("A2").Value = "A" Then MsgBox "Very Good" Else If Range("A2").Value = "B" Then MsgBox "Good" ElseIf Range("A2").Value = "C" Then MsgBox "Average" ElseIf Range("A2").Value = "D" Then MsgBox "Poor" ElseIf Range("A2").Value = "E" Then MsgBox "Very Poor" Else MsgBox "Enter Correct Grade" End Sub

Nell’esempio sopra, abbiamo scritto una macro che controllerà prima il valore “A” nella cella A2 e se la cella ha una valutazione “A”, l’istruzione restituirà il messaggio “Molto buono”.

Questa istruzione controllerà prima la cella A2 per il valore “A” e se la cella ha una valutazione “A”, l’istruzione restituirà il messaggio “Molto buono”.

E, se la prima condizione è FALSA, valuterà la seconda condizione e restituirà il messaggio “Buono” se la cella ha una valutazione “B”.

E, se la seconda condizione è falsa, si passerà alla terza condizione e così via. Alla fine, se tutte e cinque le condizioni sono false, verrà eseguito il codice che ho scritto dopo il resto.

Il segreto per scrivere un’istruzione IF in VBA

Ora conosci tutti i tipi di IS e puoi anche sceglierne uno a seconda dell’attività che devi svolgere. Lascia che ti sveli un segreto.

Istruzione IF a riga singola e istruzione IF a blocco

Puoi scrivere un’istruzione IF in due modi diversi ed entrambi presentano vantaggi e svantaggi. Guarda a.

1. Dichiarazione di una riga

L’istruzione di una riga è perfetta se si utilizza l’istruzione IF-Then. La base per utilizzare un’istruzione di riga è scrivere tutto il codice su un’unica riga.

 If A1 = 10 Then Msgbox("Cell A1 has value 10")

Nell’istruzione precedente, abbiamo scritto un’istruzione IF per valutare se la cella A1 ha un valore pari a 10, quindi verrà visualizzata una finestra di messaggio. La procedura migliore per utilizzare un’istruzione di una riga è quando è necessario scrivere codice semplice. L’utilizzo di codice a riga singola per dichiarazioni lunghe e complesse è difficile da comprendere.

Suggerimento rapido: quando si scrive codice a riga singola, non è necessario utilizzare Endif per completare l’istruzione.

2. Dichiarazione di blocco

Un’istruzione Block è perfetta quando vuoi scrivere il tuo codice in modo decente e comprensibile. Quando scrivi un’istruzione di blocco, puoi utilizzare più righe nella tua macro, ottenendo un codice ordinato e pulito.

 Sub check_value() If Range(“A1”).Value = “10” Then MsgBox ("Cell A1 has value 10") Else MsgBox ("Cell A1 has a value other than 10") End If End Sub

Nell’esempio sopra abbiamo scritto un’istruzione IF-Then-Else in blocchi. E puoi vedere che è facile da leggere e persino facile da eseguire il debug.

Quando scrivi istruzioni complesse (cosa che farai sicuramente dopo aver letto questa guida), le istruzioni a blocchi sono sempre buone. E, mentre scrivi istruzioni If nidificate, puoi anche aggiungere un rientro nella riga per maggiore chiarezza.

Suggerimento rapido : hai un’eccezione che puoi ignorare utilizzando Else alla fine del codice quando utilizzi IF-Then-Elseif-Else. Ciò è molto utile quando non è necessario eseguire alcuna attività quando nessuna delle condizioni è VERA nella tua istruzione.

8 esempi concreti

Qui ho elencato alcuni esempi semplici ma utili che puoi seguire.

1. SE nidificato

La parte migliore dell’istruzione IF è che crei istruzioni nidificate. È possibile aggiungere una seconda condizione alla prima condizione.

scrivendo annidamento if con l'istruzione if vba
 Sub NestIF() Dim res As Long res = MsgBox("Do you want to save this file?", vbYesNo, "Save File") If res = vbYes Then 'start of first IF statement If ActiveWorkbook.Saved <> True Then 'start of second IF statement. ActiveWorkbook.SaveMsgBox ("Workbook Saved") Else MsgBox "This workbook is already saved" End If 'end of second IF statement Else MsgBox "Make Sure to save it later" End If ' end of first IF statement End Sub

Nell’esempio precedente abbiamo utilizzato un’istruzione IF nidificata. Quando esegui questa macro , riceverai una finestra di messaggio con le opzioni OK e Annulla. Il lavoro dell’enunciato condizionale inizia dopo.

Innanzitutto, valuterà il pulsante su cui hai fatto clic. Se hai fatto clic su “Sì”, nidificalo per valutare se il tuo foglio di calcolo è stato salvato o meno.

Se la tua cartella di lavoro non viene salvata, la salverà e riceverai un messaggio. E, se la cartella di lavoro è già salvata, verrà visualizzato un messaggio a riguardo.

Ma se clicchi sul pulsante la condizione della prima macro sarà FALSA e riceverai solo un messaggio per salvare il tuo libro in seguito.

L’idea di base di questo codice è che la seconda condizione dipende totalmente dalla prima condizione: se la prima condizione è FALSA, la seconda condizione non verrà valutata.

Ulteriori informazioni su IF nidificato

2. Crea un ciclo con IF e GoTo

Puoi anche creare un loop usando goto con IF. La maggior parte dei programmatori evita di scrivere cicli in questo modo perché abbiamo modi migliori per eseguire i cicli . Ma non c’è nulla di male nell’imparare come possiamo farlo.

 Sub auto_open() Alert: If InputBox("Enter Username") <> "Puneet" Then GoTo Alert Else MsgBox "Welcome" End If End Sub

Nell’esempio sopra, abbiamo utilizzato un’istruzione condizionale per creare un ciclo. Abbiamo usato auto_open come nome della macro in modo che ogni volta che qualcuno apre il file, verrà eseguita questa macro.

L’utente deve inserire un nome utente e se quel nome utente non è uguale a “Puneet” ripeterà il codice e mostrerà nuovamente la casella di input. E, se inserisci il testo corretto, sarà in grado di accedere al file.

3. Controlla se una cella contiene un numero

Qui abbiamo utilizzato una condizione per verificare se la cella attiva contiene o meno un valore numerico.

utilizzare l'istruzione vba if per controllare il numero nella cella
 Sub check_number() If IsNumeric(Range("B2").Value) Then MsgBox "Yes, active cell has a number." Else MsgBox "No, active cell hasn't a number." End If End Sub

Nell’esempio sopra, ho scritto una condizione utilizzando la funzione isnumeric in VBA che è la stessa della funzione numerica nel foglio di lavoro per verificare se il valore di una cella è un numero o meno.

Se il valore è un numero, restituirà TRUE e riceverai il messaggio “Sì, la cella attiva ha un valore numerico”. Inoltre, se il valore non è un numero, riceverai il messaggio “Nessun valore numerico nella cella attiva”.

4. Utilizzare OR e AND con IF

Utilizzando IF OR, è possibile specificare due o più condizioni ed eseguire un’attività se almeno una condizione è VERA tra tutte.

 Sub UsingOR() If Range("A1") < 70 Or Range("B1") < 70 Then MsgBox "You Are Pass" Else If Range("A1") < 40 And Range("B1") < 40 Then MsgBox "You Are Pass" Else MsgBox "You Are Fail" End If End If End Sub

Nell’esempio sopra, sulla riga 2, abbiamo due condizioni che utilizzano OR. Se uno studente ottiene 70 punti in una qualsiasi delle materie, il risultato sarà un “Pass”. E nella riga 7 abbiamo due condizioni che utilizzano l’operatore AND. Se uno studente ottiene più di 40 punti in entrambe le materie, il risultato sarà “Passato”.

Utilizzando SE AND è possibile specificare più condizioni ed eseguire un’attività se tutte le condizioni sono VERE.

5. Utilizzare Non con IF

Utilizzando NOT in una condizione, è possibile modificare VERO in FALSO e FALSO in VERO.

VBA SE NO

 Sub IF_Not() If Range(“D1”) <= 40 And Not Range(“E1”) = “E” Then MsgBox "You Are Pass." Else MsgBox "You Are Fail." End If End Sub

Nell’esempio sopra abbiamo utilizzato NOT nella condizione. Abbiamo due celle con il punteggio del soggetto. In una cella il punteggio è espresso in numeri e in un’altra cella sono riportati i voti.

  • Se uno studente ha voti superiori a 40 nella prima materia e superiori al grado E nella seconda, è un PASS.
  • Se uno studente ha voti superiori a 40 nella prima materia e superiori al grado E nella seconda materia, è PASS.

Pertanto, ogni volta che i voti di uno studente sono superiori a 40 e un voto diverso da E, riceveremo un messaggio “Sei superato” o “Sei fallito”.

6. Dichiarazione IF con una casella di controllo

Ora qui usiamo una casella di controllo per eseguire una macro.

utilizzando vba if istruzione con casella di controllo
 Sub ship_as_bill() If Range("D15") = True Then Range("D17:D21") = Range("C17:C21") Else If Range(“D15”) = False Then Range("D17:D21").ClearContents Else MsgBox (“Error!”) End If End If End Sub

Nell’esempio precedente, abbiamo utilizzato un’istruzione IF per creare una condizione secondo cui, se la casella di controllo è selezionata, l’intervallo D17:D21 è uguale all’intervallo C17:C21. Inoltre, se la casella non è selezionata, l’intervallo D17:D21 sarà vuoto.

Utilizzando questa tecnica possiamo utilizzare l’indirizzo di fatturazione come indirizzo di spedizione e se abbiamo bisogno di qualcos’altro possiamo inserire l’indirizzo manualmente.

7. Controlla se una cella è unita

E qui scriviamo una condizione per ricevere un avviso se una cella attiva viene unita.

controlla se una cella è unita usando l'istruzione vba if
 Sub MergeCellCheck() If ActiveCell.MergeCells Then MsgBox "Active Cell Is Merged" Else MsgBox "Active Cell Is Not Merged" End If End Sub

Nel codice precedente, abbiamo utilizzato le celle unite per verificare se la cella attiva è unita o meno. Se la cella attiva viene unita, la condizione restituirà un avviso per questo .

8. Elimina l’intera riga se una cella è vuota

Qui usiamo IF per verificare se una riga è vuota o meno. E, se questa riga è vuota, l’istruzione cancellerà quella particolare riga.

 Sub DeleteRow() If Application.CountA(ActiveCell.EntireRow) = 0 Then ActiveCell.EntireRow.Delete Else MsgBox Application.CountA(ActiveCell.EntireRow) & "Cell(s) have values in this row" End If End Sub

Nell’esempio sopra, controllerà prima le celle che hanno un valore. Se il numero di celle con un valore è zero, la condizione cancellerà la riga attiva, altrimenti restituirà l’avviso indicando il numero di celle con un valore.

Conclusione

Come ho detto, questa è una delle parti più importanti di VBA e devi impararla se vuoi padroneggiare VBA. Con l’istruzione IF è possibile scrivere sia codici semplici che codici complessi. È inoltre possibile utilizzare operatori logici e scrivere condizioni nidificate.

Spero che questa guida ti aiuti a scrivere codici migliori.

Ora dimmi questo. Scrivi spesso condizioni in VBA? Che tipo di codici scrivi? Per favore condividi le tue opinioni con me nella sezione commenti. E non dimenticare di condividere questa guida con i tuoi amici.

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *