Pause VBA

Interrompre l'exécution du code VBA

VBA Pause est utilisé pour suspendre le code de son exécution pendant un laps de temps spécifié et pour suspendre un code dans VBA, nous utilisons la méthode application.wait.

Lorsque nous construisons de grands projets VBA après avoir effectué quelque chose, nous pouvons avoir besoin d'attendre un certain temps pour effectuer d'autres tâches. Dans de tels scénarios, comment suspendre le code de macro pour effectuer notre tâche? Nous pouvons mettre en pause le code VBA pendant une période de temps spécifiée en utilisant deux fonctions et ces fonctions sont «Attendre» et «Veille».

Comment mettre en pause le code en utilisant la méthode d'attente?

«Attendre» est la fonction que nous utilisons dans VBA pour maintenir la macro en cours d'exécution pendant une durée spécifique. En appliquant cette fonction, nous devons mentionner jusqu'à quelle heure notre code doit attendre.

Vous pouvez télécharger ce modèle Excel de pause VBA ici - Modèle Excel de pause VBA

Par exemple, si vous exécutez le code à 13:00:00 si vous indiquez l'heure comme «13:15:00», la macro sera alors exécutée pendant 15 minutes.

Maintenant, regardez l'argument de la fonction WAIT dans VBA.

Dans l'argument temporel, nous devons mentionner à quelle heure notre code doit s'arrêter ou attendre.

Par exemple, regardez le code VBA ci-dessous.

Code:

 Sub Pause_Example1 () Range ("A1"). Value = "Hello" Range ("A2"). Value = "Welcome" Application.Wait ("13:15:00") Range ("A3"). Value = " Vers VBA "End Sub 

Rappelez-vous en exécutant ce code, mon heure système est 13:00:00, dès que j'exécute le code, il exécutera les deux premières lignes, c'est-à-dire

Plage ("A1"). Valeur = "Bonjour" & Plage ("A2"). Valeur = "Bienvenue"

Mais si vous regardez la ligne suivante, elle indique Application.Wait ("13:15:00"), donc après avoir exécuté ces tâches de lignes, ma macro sera mise en pause pendant 15 minutes, c'est-à-dire à partir de 13:00:00, elle attendra que mon système le temps atteint 13:15:01.

Une fois que mon temps système atteint cette heure, il exécutera les lignes de code restantes.

Plage ("A3"). Valeur = "Vers VBA"

Cependant, ce n'est pas la meilleure façon de pratiquer le code de pause, disons que vous exécutez le code à des moments différents, nous devons alors utiliser la fonction NOW VBA avec la fonction TIME VALUE.

La fonction renvoie maintenant la date et l'heure actuelles selon le système sur lequel nous travaillons.

La fonction TIME Value contient l'heure de 00:00:00 à 23:59:29.

Ok, supposons que nous devons mettre le code en pause pendant 10 minutes chaque fois que nous exécutons le code, alors nous pouvons utiliser le code ci-dessous.

Code:

 Sub Pause_Example1 () Range ("A1"). Value = "Hello" Range ("A2"). Value = "Welcome" Application.Wait (Now () + TimeValue ("00:00:10")) Range (" A3 "). Value =" To VBA "End Sub 

Ceci est similaire au code précédent, mais la seule différence est que nous avons ajouté la fonction NOW & TIME VALUE.

Chaque fois que nous exécutons ce code, il maintiendra ou suspendra l'exécution pendant 10 minutes.

Comment mettre en pause le code VBA à l'aide de la méthode de mise en veille?

Le sommeil est une fonction compliquée dans VBA car ce n'est pas une fonction intégrée. Comme il ne s'agit pas d'un élément intégré afin de le rendre disponible, nous devons ajouter le code ci-dessous en haut de notre module.

Code:

# If VBA7 Then Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) 'For 64 Bit Systems # Else Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) # End If' Pour les systèmes 32 bits 

Il vous suffit de copier le code ci-dessus et de le coller en haut du module.

La raison pour laquelle nous devons ajouter le code ci-dessus, car SLEEP est une fonction VBA présentée dans les fichiers DLL Windows, nous devons donc déclarer la nomenclature avant de démarrer la sous-procédure.

Ok, regardons maintenant l'exemple de la fonction SLEEP.

Code:

 Sub Pause_Example2 () Dim StartTime As String Dim EndTime As String StartTime = Time MsgBox StartTime Sleep (10000) EndTime = Time MsgBox EndTime End Sub 

Tout d'abord, nous avons déclaré deux variables comme String.

 Dim StartTime As String Dim EndTime As String 

Ensuite, nous avons affecté la fonction TIME excel à la variable StartTime. La fonction TIME renvoie l'heure actuelle selon le système.

StartTime = Heure

Ensuite, nous avons attribué la même chose à afficher dans la boîte de message.

MsgBox StartTime

Ensuite, j'ai appliqué la fonction SLEEP en tant que Sleep (10000).

Ici, 10000 correspond à des millisecondes, ce qui équivaut à 10 secondes en VBA.

Puis, enfin, j'ai assigné une autre fonction TIME à la variable EndTime .

Maintenant encore, j'ai écrit un code pour afficher l'heure.

EndTime = Heure

Cela montrera la différence entre l'heure de début et l'heure de fin.

Maintenant, je vais exécuter le code et voir quelle est l'heure de début.

Quand j'exécute le code, mon heure système est 13:40:48 et maintenant mon code dormira pendant 10 secondes. À la fin, mon temps est le suivant.

Ainsi, comme ceci, nous pouvons suspendre le code de son exécution pendant une durée spécifiée.