Ce tutoriel vous montrera comment utiliser les instructions If imbriquées dans VBA
Si les déclarations vous permettent de tester une seule condition dans VBA pour voir si la condition est vraie ou fausse, et selon la réponse, le code se déplacera dans le sens de la déclaration vraie ou de la déclaration fausse.
Une seule instruction IF
1234567891011 | Sous TestSiDim x en tant qu'entierx = 10Si x = 10 alors'si x vaut 10, la condition est vraieMsgBox x est 10"Autre'si x n'est pas 10, la condition est fausseMsgbox "x n'est pas 10"Fin siFin du sous-marin |
Les FI imbriqués expliqués
Un If imbriqué vous permet de mettre plusieurs conditions À L'INTÉRIEUR de chacune des déclarations True et/ou False du If d'origine.
1234567891011121314151617181920212223242526 | Sous-testNestedIf()Dim x en tant qu'entierDim y comme entierDim z comme entierx = 10y = 9z = 8Si x = 10 alors'si x vaut 10, la condition est vraie donc testez ySi y = 8 alorsMsgBox "y est 9"Autre'si y n'est pas 10, la condition est fausseMsgbox "y n'est pas 9"Fin siAutre'si x n'est pas 10 alors la condition est fausse, alors testons zSi z = 8alorsMsgBox "z est 8"Autre'si z n'est pas 8, la condition est fausseMsgbox "z n'est pas 10"Fin si'un autre End If est nécessaire pour fermer l'original siFin siFin du sous-marin |
Indenter votre code lorsque vous l'écrivez est toujours une bonne pratique car cela rend le code facile à lire et à suivre lorsque vous devez y revenir à un moment donné, ou lorsqu'un autre programmeur doit le lire.
Nous pourrions également créer une fonction conçue par l'utilisateur (UDF) et appeler les valeurs de certaines cellules d'Excel dans la fonction à l'aide de paramètres.
1234567891011121314151617181920 | Fonction GetIf(x comme entier, y comme entier, z comme entier) comme chaîneSi x = 10 alors'si x vaut 10, la condition est vraie donc testez ySi y = 8 alorsGetIf= "y est 9"Autre'si y n'est pas 10, la condition est fausseGetIf="y n'est pas 9"Fin siAutre'si x n'est pas 10 alors la condition est fausse, alors testons zSi z = 8 alorsGetIf="z est 8"Autre'si z n'est pas 8, la condition est fausseGetIf="z n'est pas 10"Fin si'un autre End If est nécessaire pour fermer l'original siFin siFonction de fin |
Imbriqué Si Exemple Pratique
Considérez la fonction suivante :
12345678910111213141516171819202122 | Fonction GetDiscount(dblPrice As Double) As DoubleSi dblPrice >= 1000 Alors'si le prix est supérieur à 1000, attribuez une remiseSi dblPrice >= 2000 Alors'si supérieur à 2000, donner 10% de réductionGetDiscount = dblPrix * 0,1Autre'sinon donner 5% de réductionGetDiscount = dblPrix * 0,05Fin si'si le prix n'est pas supérieur à 1000Autre'si supérieur à 500, accordez une remise de 2,5%Si dblPrice >= 500 AlorsGetDiscount = dblPrice * 0,025Autre'sinon pas de remiseObtenirRéduction = 0Fin si'un autre End If est nécessaire pour fermer l'original siFin siFonction de fin |
En utilisant cette fonction dans une feuille Excel, nous pouvons tester pour voir le prix total d'une commande et appliquer différentes remises en fonction de ce total.
Programmation VBA | Le générateur de code fonctionne pour vous !
Utiliser ElseIf
ElseIf nous permet de simplifier votre code car il n'est descendu à la seconde instruction if que si la première renvoie un faux.
12345678910111213141516 | Fonction GetDiscount(dblPrice As Double) As Double'utiliser else if pour réduire l'écriture de codeSi dblPrice >= 2000 AlorsGetDiscount = dblPrix * 0,1Sinon si dblPrice >= 1000 AlorsGetDiscount = dblPrix * 0,075Sinon si dblPrice >= 500 AlorsGetDiscount = dblPrix * 0,05Sinon si dblPrice >= 200 AlorsGetDiscount = dblPrix * 0,025Sinon si dblPrice >= 100 AlorsGetDiscount = dblPrice * 0.01AutreObtenirRéduction = 0Fin siFonction de fin |
Utilisation d'un énoncé de cas
Nous pouvons également utiliser une déclaration de cas pour obtenir le même effet.
1234567891011121314151617 | Fonction GetDiscount(dblPrice As Double) As DoubleSélectionnez le cas dblPrix'cette déclaration de cas a 6 niveaux de remise différentsLe cas est >= 2000GetDiscount = dblPrix * 0,1Le cas est >= 1000GetDiscount = dblPrix * 0,075Cas Est >= 500GetDiscount = dblPrix * 0,05Cas Est >= 200GetDiscount = dblPrice * 0,025Cas Est >= 100GetDiscount = dblPrice * 0.01Cas autreObtenirRéduction = 0Fin de la sélectionFonction de fin |