Istruzioni If multiple (annidate) di VBA

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

Aiuterete lo sviluppo del sito, condividere la pagina con i tuoi amici

wave wave wave wave wave