2017-02-16 4 views
-1

Je suis très nouveau à vba. Eh bien, je suis en train d'écrire une sous-procédure avec des arguments comme Sub addcell (cible ByVal comme plage) et écrire quelques instructions. Ma question est de savoir comment exécuter cette procédure automatiquement sans rien faire et sans utiliser un bouton de commande. Y a-t-il un moyen? S'il vous plait, j'ai besoin de votre aide avec ceci.Comment exécuter la sous-procédure

+1

Quand voulez-vous qu'il fonctionne? Jetez un oeil à [Worksheet Events] (https://msdn.microsoft.com/en-us/library/microsoft.office.tools.excel.worksheet_events.aspx) – Tom

Répondre

2

Sur le côté gauche de Visual Basic Editor, vous avez le volet Explorateur de projet; ceci montre tous les objets dans votre classeur. Vous remarquerez qu'il existe au moins deux objets par défaut dans n'importe quel classeur - un objet ThisWorkbook et un objet Sheet pour chaque feuille de calcul dans le classeur. Le code que vous souhaitez exécuter automatiquement doit être placé dans ThisWorkbook ou dans l'objet Sheet approprié.

enter image description here

Si vous double-cliquez sur l'un des objets de classeur ou feuille de calcul, vous ouvrez une fenêtre de code indiquant le code actuellement stocké dans cet objet. En haut de la page se trouvent deux listes déroulantes, qui par défaut seront quelque chose comme "(Général)" et "(Déclarations)". Ouvrez la liste déroulante "(Général)" pour obtenir une liste d'objets - normalement vous verrez soit "Feuille de travail" ou "Classeur" en fonction de l'objet que vous avez ouvert.

enter image description here

Sélectionnez l'objet, puis les « (Déclarations) » menu déroulant vous donnera une liste des événements. Ils ont des noms assez descriptifs, comme "Change", "SelectionChange", "Calculate", "WorkbookOpen", etc. Sélectionnez l'événement que vous voulez, et un nouveau sous sera automatiquement créé. Mettez votre code à l'intérieur de ce sous-marin, et il s'exécutera chaque fois que ce déclencheur est atteint.

SOYEZ TRÈS PRUDENT. Si, par exemple, vous mettez du code dans l'événement Change d'une feuille de calcul qui finit par changer la feuille, vous pouvez entrer dans une boucle improductive de la feuille qui change constamment et se redéclenche sans cesse.

+0

Juste pour ajouter à cela - vous pouvez éviter la récursivité par seulement en ciblant une cellule ou une plage particulière ou en désactivant les événements et en les réactivant en utilisant 'Application.EnableEvents = False' au début et' Application.EnableEvents = True' à la fin – Tom

+1

Merci les gars. Était un grand plaisir de le voir fonctionner maintenant. S'il vous plaît continuez à aider. Merci et kadrinchey (merci en bhoutanais) – user7561012