Apprenez à déboguer les fonctions personnalisées dans Excel
Comme vous savez déjà comment créer des UDF (et, j'espère, vous avez également essayé de les appliquer dans votre Excel), creuons un peu plus profondément et voyons ce qui peut être fait au cas où votre fonction définie par l'utilisateur ne fonctionnerait pas.
Afin de résoudre certains problèmes lors de la création d'une fonction personnalisée, vous devrez probablement exécuter un débogage. Ensuite, vous pouvez être sûr que la fonction fonctionne correctement.
Nous explorerons les techniques de débogage suivantes:
Lorsque vous créez une fonction personnalisée, il y a toujours une possibilité que vous fassiez une erreur. Les fonctions personnalisées sont généralement assez complexes. Et ils ne commencent pas toujours à travailler correctement tout de suite. La formule peut retourner un résultat incorrect ou le #Value! erreur. Contrairement aux fonctions Excel standard, vous ne verrez aucun autre message.
Existe-t-il un moyen de parcourir une fonction personnalisée étape par étape pour vérifier comment fonctionne chacune de ses instructions? Bien sûr! Le débogage est utilisé pour cela.
Je vais vous offrir plusieurs façons de déboguer votre fonction personnalisée afin que vous puissiez choisir celle qui fonctionne pour vous.
À titre d'exemple, nous utilisons la fonction personnalisée GetMaxbetween de l'un de nos articles précédents qui calcule le nombre maximum dans la plage de valeurs spécifiée:
Les arguments de fonction sont la plage de cellules où les nombres sont écrits, ainsi que la limite supérieure et inférieure des valeurs.
Placer la fonction MSGBOX dans des endroits importants
Afin de surveiller l'exécution des calculs, vous pouvez afficher les valeurs des variables les plus importantes à l'écran aux bons endroits. Cela peut être fait à l'aide de boîtes de dialogue contextuelles.
MSGBOX est une boîte de dialogue que vous pouvez utiliser pour afficher une sorte de message à l'utilisateur.
La syntaxe de MSGBOX est similaire à d'autres fonctions VBA:
Msgbox (invite [, boutons] [, titre] [, helpfile, contexte])L'invite est un argument requis. Il contient le message que vous voyez dans la boîte de dialogue. Il peut également être utilisé pour afficher les valeurs des variables individuelles.
Tous les autres arguments sont facultatifs.
[ Boutons ] - Détermine quels boutons et icônes sont affichés dans la MSGBOX . Par exemple, si nous utilisons l'option vbokonly , seul le bouton OK sera affiché. Même si vous avez manqué cet argument, ce bouton est utilisé par défaut.
[ Titre ] - Ici, vous pouvez spécifier le titre de la zone de message.
Passons des mots à la pratique et commençons le débogage. Pour afficher le message, ajoutez la ligne suivante au code de la fonction GetMaxBetween définie par l'utilisateur avant l'opérateur du cas :
Voici ce que nous obtiendrons dans le résultat:
En utilisant la variable VMAX dans la boîte de dialogue, nous verrons quels nombres répondent aux critères de sélection, afin que nous puissions en sélectionner les plus importants. Avec l'expression "Count -" & i dans la barre de titre, nous indiquons le nombre de nombres que nous avons déjà sélectionnés pour déterminer la valeur maximale. Le compteur sera augmenté à chaque nouvelle valeur.
Une fois que nous avons notre ensemble UDF, nous appliquons la formule ci-dessous à la plage de dates:
= GetMaxBetween (A1:A6,10,50)
Une fois le bouton Entrer appuyé sur, vous verrez un message comme dans la capture d'écran ci-dessous:
Il s'agit du premier numéro de la plage A1: A6 qui répond aux critères: supérieur à 10 mais moins de 50.
Après avoir cliqué sur OK, un deuxième message apparaît avec le numéro 14. Le reste des chiffres ne correspond pas aux critères de sélection. Par conséquent, la fonction quitte et renvoie la plus grande des deux valeurs, 17.
La fonction MSGBOX peut être utilisée dans les endroits les plus importants de votre fonction personnalisée pour contrôler comment les valeurs des variables individuelles changent. Les boîtes de message peuvent être très utiles lorsque vous avez une grande fonction et beaucoup de calcul. Dans ce cas, il vous sera facile de déterminer dans quelle partie du code l'erreur se produit.
Déterminer les points d'arrêt et effectuer étape par étape
Vous pouvez ajouter des points d'arrêt au code de votre fonction où l'exécution du code s'arrêtera. Vous pouvez donc suivre le processus de calcul étape par étape. Ce faisant, vous pouvez voir comment les valeurs des variables changent.
Pour ajouter un point d'arrêt, placez le curseur sur la ligne contenant l'instruction où vous choisissez de faire une pause. Ensuite, cliquez avec le bouton droit et sélectionnez Débogage -> Bablochez le point d'arrêt ou appuyez simplement sur F9 . Vous pouvez également cliquer à l'endroit souhaité sur la zone gris verticale à gauche du code de fonction.
Un cercle rouge apparaîtra, comme vous pouvez le voir dans la capture d'écran ci-dessous. La ligne de code où le calcul sera arrêté est mise en évidence en rouge.
Maintenant, la fenêtre de l'éditeur VBA sera ouverte lors de l'exécution de la fonction. Le curseur sera positionné au point où vous vous êtes arrêté.
Si vous survolez votre curseur de souris sur l'une des variables du code de fonction, vous pouvez voir leur valeur actuelle:
Appuyez sur F5 pour continuer le calcul.
Note. Après le point d'arrêt, vous pouvez commencer à suivre les progrès des calculs étape par étape. Si vous appuyez sur le bouton F8 , une seule ligne suivante du code VBA sera exécutée. La ligne jaune avec une flèche passera également à la dernière position de code exécutée.
Étant donné que l'exécution de la fonction est à nouveau en pause, vous pouvez afficher les valeurs actuelles de toutes les variables de la fonction à l'aide du curseur de la souris.
La prochaine presse de F8 nous fera un pas en avant. Vous pouvez donc appuyer sur F8 jusqu'à la fin du calcul. Ou appuyez sur F5 pour poursuivre le calcul jusqu'au prochain point d'arrêt.
Si une erreur se produit, le curseur sera arrêté au point du code où l'erreur s'est produite. Et vous verrez également un message d'erreur contextuel. Cela facilite la détermination de la cause du problème.
Les points d'arrêt que vous spécifiez seront appliqués jusqu'à la fermeture du fichier. Lorsque vous le rouvrez, vous devrez les remettre à nouveau. Pas la méthode la plus pratique, vous ne pensez pas?
Cependant, ce problème peut être résolu. Insérez une instruction d'arrêt dans le code de fonction aux points nécessaires, et vous pouvez arrêter l'exécution du programme de la même manière que lorsque vous utilisez des points d'arrêt.
Lorsque VBA rencontre une déclaration d'arrêt , cela arrêtera l'exécution du programme et attendra votre action. Vérifiez les valeurs des variables, puis appuyez sur F5 pour continuer.
Ou appuyez sur F8 pour remplir la fonction étape par étape comme décrit ci-dessus.
L'instruction STOP fait partie du programme et n'est donc pas supprimée, comme c'est le cas avec un point d'arrêt. Lorsque vous avez terminé le débogage, supprimez-le vous-même. Ou le transformer en un commentaire en le précédant avec une seule citation (').
Débogage à l'aide de l'opérateur Debug.print
Vous pouvez placer le debug.print dans le code de fonction au bon endroit. Ceci est utile pour vérifier les valeurs des variables qui changent cycliquement.
Vous pouvez voir un exemple de performance de Debug.print sur la capture d'écran ci-dessous.
Énoncé Debug.print I, VMax imprime les valeurs et leurs nombres ordinaux.
Dans la fenêtre immédiate, vous voyez deux nombres (17 et 14) de la plage sélectionnée, qui correspond aux limites définies et parmi lesquelles le maximum sera sélectionné. Les chiffres 1 et 2 signifient que la fonction a terminé 2 cycles dans lesquels les nombres ont été sélectionnés. Nous voyons les valeurs des variables les plus importantes, comme nous l'avons fait plus tôt avec Msgbox . Mais cela n'a pas arrêté la fonction.
Appelez une fonction à partir d'une procédure
Vous pouvez appeler une fonction définie par l'utilisateur non pas à partir d'une cellule dans la feuille de calcul, mais à partir d'une procédure. Dans ce cas, toutes les erreurs seront affichées dans la fenêtre Visual Basic Editor.
Voici comment vous pouvez appeler la fonction définie par l'utilisateur GetMaxber Sewen à partir d'une procédure:
Positionnez le curseur n'importe où dans le code et appuyez sur F5 . S'il n'y a pas d'erreur dans la fonction, vous verrez une fenêtre contextuelle avec le résultat de calcul.
En cas d'erreur, vous verrez un message correspondant dans l'éditeur VBA. Le calcul sera arrêté et la ligne de code dans laquelle l'erreur s'est produite sera mise en évidence en jaune. Vous pouvez facilement identifier où et pourquoi l'erreur s'est produite.
C'est tout. Vous avez maintenant créé votre propre complément, l'a ajouté à Excel et vous pouvez y utiliser l'UDF. Si vous souhaitez utiliser plus de UDFS, écrivez simplement le code dans le module complémentaire dans l'éditeur VBA et enregistrez-le.
C'est tout pour aujourd'hui. Nous avons couvert différentes façons de déboguer les fonctions personnalisées et appris à les utiliser dans votre classeur. Nous espérons vraiment que vous trouverez ces directives utiles. Si vous avez des questions, écrivez dans les commentaires de cet article.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds









