VBA Excel: istruzioni condizionali
Gestire le condizioni vero falso con If e Select case
Autore: Andrea Pacchiarotti
Ultimo aggiornamento: 16 Marzo 2023
Categoria: Microsoft Office Excel VBA Istruzioni condizionali

Istruzioni condizionali
Le istruzioni condizionali, dette anche istruzioni di controllo o istruzioni di flusso, servono per decidere quale azione eseguire a seconda della condizione; ne esistono di vario tipo e, in VBA Excel, vengono introdotte dalle parole chiave If, IIf e Select Case. Sarà il programmatore a decidere qual è più conveniente utilizzare. Se Excel VBA Istruzioni condizionali ti interessa, continua nella lettura.
Sommario VBA Excel: istruzioni condizionali
- If
- If…Then a riga multipla o singola
- If…Then…Else a riga multipla o singola
- If…Then…Else annidati
- If…Then…ElseIf
- IIf ImmediateIf
- Select case
If
- If…Then a riga multipla o singola
If Condizione Then
Istruzioni
End If
Nell’If a riga singola non è necessario chiudere l’If
If Condizione Then Istruzioni
A prima vista i costrutti a riga singola possono sembrare più semplici, ma quando condizioni e istruzioni sono lunghe, diventano meno leggibili.
Esempio - Inizializzando a 1 una variabile chiamata numero, far uscire una finestra contenente la frase «Vali 1», l’icona dell’informazione e Info nella barra del titolo.
Quando funziona renderlo a riga singola.
Ecco il codice per la riga multipla:
Sub Condizione()
È possibile evitare di mettere = 1 e scrivere invece solo la variabile numero.
Dim numero As Byte
numero = 1
If numero = 1 Then
MsgBox "Vali 1", 64, "Info"
End If
End Sub
Ecco quello per la riga singola:
Sub Condizione()
Dim numero As Byte
numero = 1
If numero = 1 Then MsgBox "Vali 1", 64, "Info“
End Sub
- If…Then…Else a riga multipla o singola; è il tipico SE di Excel
If con Else specifica 2 azioni da prendere in base alla condizione
If Condizione Then
Istruzioni
Else
Istruzioni per Else
End If
If con Else a riga singola (non si chiude l’If)
If Condizione Then Istruzioni Else Istruzioni per Else
Esempio - Si hanno due numeri: 1 e 2. Attraverso il suddetto costrutto, inizializzando una variabile chiamata numero a 2 e testando con l’If la variabile con l’1, far uscire una finestra contenente la frase «Vali 1» o «Vali 2» sfruttando l’Else (ovviamente uscirà quest’ultima dato che la variabile è stata inizializzata a 2). Quando funziona renderlo a riga singola.
Ecco il codice per la riga multipla:
Sub Condizione()
Dim numero As Byte
numero = 2
If numero = 1 Then
MsgBox "Vali 1"
Else
MsgBox "Vali 2"
End If
End Sub
Ecco quello per la riga singola:
Sub Condizione()
Dim numero As Byte
numero = 2
If numero = 1 Then MsgBox "Vali 1" Else MsgBox "Vali 2"
End Sub
- If…Then…Else annidati; è il tipico SE nidificato di Excel
La nidificazione consente di scegliere fra più istruzioni da eseguire in base a diverse condizioni
If Condizione Then
Istruzioni
Else
If Condizione2 Then
Istruzioni1
Else
Istruzioni 2
End If
End If
- If…Then…ElseIf alternativa al precedente costrutto
Nell’If semplificato con ElseIf non è necessario chiudere l’ElseIf
If Condizione Then
Istruzioni
ElseIf Condizione2 Then
Istruzioni1
Else
Istruzioni 2
End If
- IIf ImmediateIf è un’alternativa a If…Then…Else o a If…Then…Elseif
Opera come If ... Then ... Else.
Sub Condizione()
Dim eta As Integer, cat As String
eta = 16
cat = IIf(eta <= 18, "Ragazzo", "Adulto")
MsgBox ("Categoria : " & cat)
End Sub
Ecco IIf usato al posto di If ... Then ... ElseIf
Sub Condizione()
Dim eta As Byte, cat As String
eta = 74
cat = IIf(eta <= 18, "Ragazzo", IIf(eta < 55, "Adulto", "Anziano"))
MsgBox "Fascia eta : " & cat
End Sub
Esercizi
Esercizio su If Then Else a riga multipla con MsgBox in una variabile.
MsgBox con frase “Vuoi continuare?”, 2 pulsanti: Sì e No e il titolo “Scelta”
Se si clicca:
- Sì compare una finestra con la frase “Hai deciso di continuare” (in un caso pratico, anziché far apparire una finestra, gli si farebbe ad esempio fare una funzione, un’esportazione, ecc.) e un pulsante Ok
- No esce la frase “Stai per uscire dall’applicazione” e un pulsante Ok
Sub Condizione()
Dim Risposta As String
Risposta = MsgBox("Vuoi continuare?", vbYesNo, "Scelta") ‘4
If Risposta = vbYes Then ‘6, vbNo 7
MsgBox "Hai deciso di continuare"
Else
MsgBox "Stai per uscire dall'applicazione"
End If
End Sub
Esercizio su If Then Else a riga multipla nidificato con InputBox in una variabile e MsgBox.
Attraverso una variabile gradi ottenere una InputBox posizionata a 4000, 1000 con frase:
“A quanti gradi metti il termostato:” e titolo “Temperatura”
Se la temperatura è:
- maggiore di 20°, ma minore o uguale a 25 compare la frase Temperatura gradevole
- maggiore di 25° compare Temperatura alta
- uguale a 20° compare Temperatura giusta
- minore di 20° compare Temperatura bassa
Usare gli operatori di confronto e, quando necessario, l’And.
Prevedere o meno l’uso della virgola e di numeri negativi.
Semplificare il listato precedente con If ... Then .. ElseIf.
Ecco l’esercizio risolto con If … Then … Else:
la tipizzazione è stata effettuata con Single per considerare eventuali decimali, ovviamente a seconda delle circostanze, si sarebbe potuto utilizzare Integer o Byte
Sub Condizione()
Dim gradi As Single
gradi = InputBox("Inserisci gradi: ", "Temperatura", , 4000, 1000)
If gradi > 20 And gradi <= 25 Then
MsgBox "Temperatura gradevole"
Else
If gradi > 25 Then
MsgBox "Temperatura alta"
Else
If gradi = 20 Then
MsgBox "Temperatura giusta"
Else
MsgBox "Temperatura bassa"
End If
End If
End If
End Sub
Ecco l’esercizio risolto con If … Then … ElseIf:
Sub Condizione()
Dim gradi As Single ‘Integer o Byte
gradi = InputBox("Inserisci gradi: ", "Temperatura", , 4000, 1000)
If gradi > 20 And gradi <= 25 Then
MsgBox "Temperatura gradevole"
Elseif gradi > 25 Then
MsgBox "Temperatura alta"
Elseif gradi = 20 Then
MsgBox "Temperatura giusta"
Else
MsgBox "Temperatura bassa"
End If
End Sub
Tramite InputBox e If…ElseIf inserire dati numerici nella cella A1 e testuali in A2. Non si tipizzi.
IsNumeric() è la funzione che permette il controllo sui numeri
Sub InserisciInCella()
Dim MioValore
MioValore = InputBox("Inserisci qualcosa: ")
If MioValore = IsNumeric(MioValore) Then
Range("A1").Value = MioValore
ElseIf MioValore <> IsNumeric(MioValore) Then
Range("A2").Value = MioValore
End If
End Sub
Tramite InputBox e If…Then…ElseIf inserire in A1 numeri tra 1 e 100, in A2 numeri tra 200 e 300, in A3 dati testuali. Non si tipizzi.
Sub InserisciInCelle()
Dim MioValore
MioValore = InputBox("Inserisci ciò che vuoi:")
If MioValore >= 1 And MioValore <= 100 Then
Range("A1").Value = MioValore
ElseIf MioValore >= 200 And MioValore <= 300 Then
Range("A2").Value = MioValore
ElseIf MioValore <> IsNumeric(MioValore) Then
Range("A3").Value = MioValore
End If
End Sub
Select Case
Si utilizza se si hanno tante scelte da effettuare e diventa difficile leggere un If
Select Case variabile
Case condizione1
Istruzioni1
...
Case condizione n
Istruzioni n
Case Else
Istruzioni Else
End Select
Con Select Case si possono usare:
- gli operatori di confronto
Case Is operatore espressione
Case Is< 10
- l’operatore To per specificare un intervallo
condizione1 To condizione2
Case 1 To 10
(ma anche: Case 1 To 10 , Case 20 To 100 )
- l’oppure mettendo la virgola (non l’Or)
Case 8, 9, …
- il testo mettendo le virgolette
Case "Pippo"
Case is "Pippo"
Case "a" To "f"
(ma anche: Case "a" To "f", Case "i" To "p")
Esercizio
Esercizio simile al precedente, ma con 5 risposte decise dal lettore per i seguenti gradi: >23°, tra 21° e 23°, tra 17° e 20°, >10°, fino a 10°.
Usare operatori di confronto e operatore To.
Partire dal valore più alto e scendere.
Se non si considerano i negativi è possibile tipizzare con Byte
Sub Condizione()
Dim gradi As Integer
gradi = InputBox("Inserisci gradi: ", "Misura la temperatura di casa")
Select Case gradi
Case Is > 23
MsgBox "Troppo caldo, vedrai che bolletta"
Case 21 To 23
MsgBox "Bello caldo, si sta bene"
Case 17 To 20
MsgBox "Temperatura giusta"
Case Is > 10
MsgBox "Raffreddore assicurato"
Case Else
MsgBox "Troppo freddo si ghiaccia"
End Select
End Sub
Se Excel VBA Istruzioni condizionali ti è piaciuto, e hai capito come gestire nel VBA di Excel il vero e il falso all'interno delle istruzioni condizionali, condividi l'articolo!
Per saperne di più su Microsoft Excel potrebbero interessarti i video corsi Excel o questi libri: