Questo tutorial ti mostrerà come utilizzare le istruzioni If annidate in VBA
Se le istruzioni ti consentono di verificare una singola condizione in VBA per vedere se la condizione è True o False e, a seconda della risposta, il codice si sposterà nella direzione dell'affermazione vera o falsa.
Una singola istruzione IF
1234567891011 | Sub TestIfDim x come interox = 10Se x = 10 allora'se x è 10, la condizione è veraMsgBox x è 10"Altro'se x non è 10, la condizione è falsaMsgbox "x non è 10"Finisci seFine sottotitolo |
Spiegazione degli IF nidificati
Un If annidato ti consente di inserire più condizioni ALL'INTERNO di ciascuna delle affermazioni True e/o False dell'If originale.
1234567891011121314151617181920212223242526 | Sub TestNestedIf()Dim x come interoDim y come interoDim z come numero interox = 10y = 9z = 8Se x = 10 allora'se x è 10, la condizione è vera, quindi prova per ySe y = 8 alloraMsgBox "y è 9"Altro'se y non è 10, la condizione è falsaMsgbox "y non è 9"Finisci seAltro'se x non è 10, la condizione è falsa, quindi' testiamo zSe z = 8 alloraMsgBox "z è 8"Altro'se z non è 8, la condizione è falsaMsgbox "z non è 10"Finisci se'un altro End If è necessario per chiudere l'originale ifFinisci seFine sottotitolo |
Indentare il tuo codice quando lo scrivi è sempre una buona pratica in quanto rende il codice facile da leggere e da seguire quando devi tornarci ad un certo punto, o quando un altro programmatore deve leggerlo.
Potremmo anche creare una funzione progettata dall'utente (UDF) e chiamare i valori di alcune celle da Excel nella funzione utilizzando i parametri.
1234567891011121314151617181920 | Funzione GetIf(x come numero intero, y come numero intero, z come numero intero) come stringaSe x = 10 allora'se x è 10, la condizione è vera, quindi prova per ySe y = 8 alloraGetIf= "y è 9"Altro'se y non è 10, la condizione è falsaGetIf="y non è 9"Finisci seAltro'se x non è 10, la condizione è falsa, quindi' testiamo zSe z = 8 alloraGetIf="z è 8"Altro'se z non è 8, la condizione è falsaGetIf="z non è 10"Finisci se'un altro End If è necessario per chiudere l'originale ifFinisci seFine funzione |
Annidato se esempio pratico
Considera la seguente funzione:
12345678910111213141516171819202122 | Funzione GetDiscount (dblPrice As Double) As DoubleSe dblPrice >= 1000 Allora'se il prezzo è maggiore di 1000, assegna uno scontoSe dblPrice >= 2000 Allora'se maggiore di 2000, sconto del 10%OttieniSconto = dblPrice * 0.1Altro'altrimenti sconto del 5%OttieniSconto = dblPrice * 0.05Finisci se'se il prezzo non è maggiore di 1000Altro'se maggiore di 500, sconto del 2,5%Se dblPrice >= 500 AlloraOttieniSconto = dblPrice * 0.025Altro'altrimenti nessuno scontoOttieniSconto = 0Finisci se'un altro End If è necessario per chiudere l'originale ifFinisci seFine funzione |
Utilizzando questa funzione in un foglio Excel, possiamo provare a vedere il prezzo totale per un ordine e applicare sconti diversi a seconda di quel totale.
Programmazione VBA | Il generatore di codice funziona per te!
Utilizzo di ElseIf
ElseIf ci consente di semplificare il codice poiché è passato alla seconda istruzione if solo se la prima restituisce un falso.
12345678910111213141516 | Funzione GetDiscount (dblPrice As Double) As Double'usa altro se per ridurre la scrittura del codiceSe dblPrice >= 2000 AlloraOttieniSconto = dblPrice * 0.1ElseIf dblPrice >= 1000 ThenOttieniSconto = dblPrice * 0.075ElseIf dblPrice >= 500 AlloraOttieniSconto = dblPrice * 0.05ElseIf dblPrice >= 200 ThenOttieniSconto = dblPrice * 0.025ElseIf dblPrice >= 100 ThenOttieniSconto = dblPrice * 0.01AltroOttieniSconto = 0Finisci seFine funzione |
Utilizzo di una dichiarazione del caso
Possiamo anche usare una Case Statement per ottenere lo stesso effetto.
1234567891011121314151617 | Funzione GetDiscount (dblPrice As Double) As DoubleSeleziona Case dblPrice'questa dichiarazione del caso ha 6 diversi livelli di scontoIl caso è >= 2000OttieniSconto = dblPrice * 0.1Il caso è >= 1000OttieniSconto = dblPrice * 0.075Il caso è >= 500OttieniSconto = dblPrice * 0.05Il caso è >= 200OttieniSconto = dblPrice * 0.025Il caso è >= 100OttieniSconto = dblPrice * 0.01Caso AltroOttieniSconto = 0Fine selezioneFine funzione |