Comment arrêter accès au code VBA conditionnellement?
J'ai donc créé un formulaire dans Access, qui a une zone de liste déroulante et une zone de texte. Le formulaire calcule certaines choses après avoir appuyé sur un bouton, mais soit à la fois la boîte combo et la zone de texte doivent être remplis, ou aucun des deux ne peut être rempli. Ce que je voudrais faire est de mettre dans un état, de sorte que si un seul d'entre eux est rempli, un Message de la Boîte de popup, d'expliquer à remplir les deux cases, puis passez à l'arrêt le code. Je comprends comment faire la boîte de message de la partie, mais maintenant, c'est en montrant la boîte de message et poursuivre avec le code qui génère une erreur.
J'ai fait quelques recherches mais la plupart de ce que je suis la recherche a à voir avec l'interruption momentanée de la forme, pas complètement arrêter.
J'ai quelques idées sur la façon de le faire, mais je vais avoir de la difficulté à exécuter et, franchement, je ne suis même pas sûr qu'ils vont travailler. Mon premier projet a été de copier et coller tout le calcul des pièces de la procédure, de créer une nouvelle procédure avec eux, de créer une instruction if dans le bouton en cliquant sur la procédure et d'appel de la nouvelle procédure, si elle passe de l'instruction if. Mon deuxième est un peu plus fastidieux, mais je suis assez confiant, ça va marcher. C'est juste entourant tout le code avec une instruction if, si elle passe exécuter le code, si ce n'est pas, ne rien faire et avoir atteint la fin de la procédure et à la fin elle-même. Mon seul problème avec la deuxième est que j'ai BEAUCOUP de code à l'avance, et je préfère ne pas perdre une grande quantité de temps à refaire la mise en retrait des lignes si je peux l'aider, mais je n'ai que comme une sauvegarde si je ne peux pas trouver une meilleure façon.
- Aller pour la première option 🙂
Vous devez vous connecter pour publier un commentaire.
Vous avez un peu d'options s'offrent à vous:
L'Option 1 est probablement la meilleure approche, car il favorise de meilleures pratiques de codage. Si vous avez longtemps sous-routines, il pourrait être un signe que vous avez besoin pour briser la routine sub en de plus petites unités de travail, ce qui rend la réutilisation du code et de débogage beaucoup plus facile.
L'Option 2 est plus appropriée dans certains cas où la condition est vraiment une erreur. On pourrait faire valoir qu'en l'absence d'un test de validation est une forme d'une condition d'erreur.
Personnellement, j'ai tendance à éviter d'utiliser la Sortie Sub et Function de Sortie (Option 3) dans la plupart des cas parce que j'aime avoir un seul point dans une sous-routine où la routine sorties et repasse le contrôle de la procédure d'appel. Le fait d'avoir plusieurs points de sortie à l'intérieur d'une routine est un signe que vous avez besoin de revoir votre code \ repenser la logique que vous postulez. Parfois, il ne peut pas être aidé, mais souvent vous créer une situation qui est plus difficile à déboguer.
Lorsque vous faites apparaître la boîte de message, vous devriez être en mesure d'utiliser la Sortie Sub ou la Fonction de Sortie en fonction de ce que vous procédure. Il doit arrêter l'exécution du code et de sortie de la procédure.
Exit Sub
, pasEnd Sub
.Exit Sub
fonctionne comme un relevī et ne devrait pas vous causer des ennuis.w.r.t. l'openIf
déclaration (bien sûr, vous devez le fermer avecEnd If
après laExit Sub
).Je sais il est tard mais je voulais juste ajouter que si vous voulez arrêter l'exécution de tout le code VBA, vous pouvez simplement utiliser
End
dans votre gestionnaire d'erreur par exemple.De cette façon, il ne sera pas de retour à la sous/fonction qui a appelé (si il y en a un).
Espère que cela aide.