Fonction d'attente VBA

Fonction d'attente Excel VBA

VBA Wait est une fonction intégrée utilisée pour suspendre l'exécution du code pendant une durée spécifiée, elle est très similaire à ce que nous faisons dans une commande de veille et pour mettre en pause un code que nous utilisons la méthode application.wait.

Certains codes nécessitent un certain temps avant de passer à la ligne de code suivante en raison d'autres tâches à accomplir. Dans ces cas, nous devons arrêter le code à exécuter et faire une pause pendant un certain temps, puis procéder à l'exécution. On peut suspendre le code à exécuter de deux manières, la première est la méthode «Sleep» et la seconde est la méthode «Wait». Dans notre article précédent, nous avons discuté de la méthode «VBA Sleep» pour suspendre le code VBA.

«Attendez» comme son nom l'indique, il contiendra le code de macro à exécuter jusqu'à un laps de temps spécifié. En utilisant cette méthode, nous devons spécifier l'heure à laquelle notre code doit s'arrêter, nous verrons des exemples ensuite.

La syntaxe de la fonction WAIT est la suivante.

Nous devons mentionner la durée pendant laquelle notre code doit s'arrêter. Comme vous pouvez le voir à la fin, il dit booléen, cela signifie qu'il renvoie le résultat sous forme de valeurs booléennes, c'est-à-dire VRAI ou FAUX.

Jusqu'à ce que l'heure spécifiée arrive, il dit FALSE et au moment spécifié, il retourne TRUE.

Ceci est différent de la fonction SLEEP car WAIT est une fonction intégrée où SLEEP est une fonction Windows. Avant d'accéder à la fonction SLEEP, nous devons mentionner le code ci-dessous en haut du module. Mais WAIT ne l'exige pas.

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)' For 32 Bit Systems End If 

Exemples d'utilisation de la fonction d'attente Excel VBA

Vous pouvez télécharger ce modèle Excel d'attente VBA ici - Modèle Excel d'attente VBA

Exemple 1

Supposons que vous travaillez dans un excellent milieu de journée à 14:30:00 et que vous souhaitez que votre code soit mis en pause jusqu'à ce que l'heure devienne 14:40:00. Vous pouvez utiliser le code ci-dessous.

Code:

 Sous Wait_Example1 () Application.Wait "14:40:00" End Sub 

Le code empêchera votre Excel de fonctionner jusqu'à ce que l'heure atteigne 14:40:00 dans votre système d'exploitation. Fournir un temps comme celui-ci est dangereux car nous ne travaillons pas toujours à partir de 14h30, cela varie tout le temps.

Disons que chaque fois que vous exécutez le code que vous souhaitez attendre 2 minutes, comment faire référence à cela dans votre code?

Ainsi, nous pouvons utiliser la fonction VBA NOW avec la fonction TIME VALUE pour entrer l'heure spécifiée à partir de l'heure actuelle.

Juste pour vous rappeler que la fonction NOW () renvoie la date et l'heure actuelles selon votre système informatique. La fonction TIMEVALUE représente l'heure de 00:00:00 à 23:59:59 soit 23:59:59 PM au format 24 heures. Il convertit la valeur de chaîne en valeur de temps.

Par exemple NOW () + TIMEVALUE (00:02:30) signifie l'heure actuelle + 2 min 30 sec.

Si l'heure actuelle est 14:25:30, elle devient 14:28:00.

Pour arrêter ou interrompre l'exécution de votre code de l'heure actuelle aux 10 minutes suivantes, vous pouvez utiliser le code ci-dessous.

Code:

 Sous Wait_Example2 () Application.Wait (Now () + TimeValue ("00:10:00")) End Sub 

Il est important d'utiliser une fonction NOW () pour une pause précise, sinon, il y a des chances que votre classeur Excel soit suspendu jusqu'à minuit. Cependant, nous pouvons sortir de la méthode de pause à tout moment en appuyant sur la touche Esc ou Break.

Exemple # 2

Attendez 10 secondes à chaque exécution de la boucle

La méthode wait est bien utilisée avec les boucles. Dans certaines situations, vous devrez peut-être attendre 10 secondes à chaque exécution de la boucle. Par exemple, regardez les données ci-dessous.

Pour calculer Profit = (Sales - Cost), vous voulez créer une boucle et après chaque boucle, vous voulez attendre 10 secondes pour vérifier si le résultat est exact ou non. Le code ci-dessous fera cela.

Code:

 Sous Wait_Example3 () Dim k As Integer For k = 2 To 9 Cells (k, 4) .Value = Cells (k, 2) - Cells (k, 3) Application.Wait (Now () + TimeValue ("00:00) : 10 ")) Suivant k End Sub 

Ce code calculera la colonne de profit ligne par ligne. Une fois la première ligne terminée, il attendra 10 secondes avant de calculer la ligne suivante.

Veille VBA vs Attente VBA

VBA SLEEPATTENDRE VBA
Ce n'est pas une fonction intégrée VBA, a besoin d'un code spécial pour accéder à cette fonction.C'est une fonction intégrée VBA, ne nécessite aucun code spécial pour accéder à cette fonction.
Le sommeil nécessite des millisecondes comme laps de temps.Attendre nécessite un laps de temps régulier.
Nous pouvons retarder le code en millisecondesNous ne pouvons retarder que quelques secondes entières.