Fonction de veille VBA

Fonction de veille Excel VBA

La fonction Veille VBA est une fonction Windows présente sous les fichiers DLL Windows qui est utilisée pour arrêter ou suspendre l'exécution de la procédure de macro pendant un laps de temps spécifié après que nous pouvons reprendre le programme.

Il existe des situations dans lesquelles nous devons interrompre notre processus d'exécution de macros pour terminer d'autres ensembles de tâches. D'autres ensembles de tâches pourraient faire partie de notre codage ou faire partie d'une autre procédure de macro ou il pourrait être entré pour la macro Excel actuelle. Comment pouvez-vous suspendre le programme lorsqu'il est en cours d'exécution? Nous pouvons suspendre le code de procédure pendant un certain temps spécifié par l'utilisateur et après cette certaine quantité nous pouvons reprendre le programme. Nous pouvons le faire dans VBA en utilisant la fonction SLEEP.

Que fait la fonction de veille VBA?

SLEEP comme le nom lui-même dit «dormir pendant un certain temps», «se reposer pendant un certain temps», «faire une pause pour le temps», se reposer pendant un certain temps », etc. La fonction de veille permet aux utilisateurs de suspendre notre code de macro pendant des millisecondes. En utilisant cela, nous pouvons retarder le processus de code macro.

Si vous pensez que nous avons une fonction intégrée appelée SLEEP, vous vous trompez car dans VBA, il n'y a pas de fonction de ce type, nous avons plutôt une fonction appelée Sleep as a Windows. En entrant un ensemble spécial de code, nous pouvons réellement appeler cette fonction dans VBA. En fait, c'est une fonction présente à l'intérieur des fichiers DLL Windows, nous devons donc déclarer la nomenclature de l'API avant le démarrage du sous-programme dans vba.

Voici le code VBA.

Code:

# If VBA7 Then Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) 'For 64-Bit versions of Excel # Else Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)' Pour les versions 32 bits de Excel # Fin si 

Copiez ce qui précède et collez-le dans votre module avant de commencer à écrire les codes macro. Il devrait être collé comme ceci dans votre module.

Exemple

Avant de vous montrer comment écrire le code, laissez-moi vous parler un peu plus de la fonction de veille. Il retarde le processus en millisecondes. Donc 1 seconde est égale à 1000 millisecondes, si vous voulez faire une pause de 10 secondes, cela devrait être de 10000 millisecondes.

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

Exemple 1

Une fois le code API collé avant le début de la procédure Sub, créez un nom de macro.

Code:

# Sub Sleep_Example1 () End Sub 

Déclarez deux variables sous forme de chaîne.

Code:

 Dim StartTime As String Dim EndTime As String 

Pour la variable StartTime , attribuez la valeur de la fonction TIME. Remarque: TIME dans la fonction Excel renvoie l'heure actuelle.

Code:

StartTime = Heure

Nous allons maintenant afficher ce message dans la boîte de message VBA.

Code:

StartTime = Heure MsgBox StartTime

Maintenant, nous allons mettre le code en pause pendant 10 secondes en utilisant la fonction de veille. Comme je l'ai dit, il met le code en pause en millisecondes, donc pour faire une pause de 10 secondes, nous devons utiliser 10000 millisecondes.

Code:

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

Utilisez maintenant la deuxième variable EndTime et attribuez l'heure actuelle.

Code:

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

Maintenant, deux variables StartTime et EndTime contiendront l'heure de début et l'heure de fin de la macro. Exécutez cette macro, dans un premier temps, nous verrons l'heure de début de la macro, c'est-à-dire l'heure actuelle dans votre système.

Cliquez sur OK, il dormira pendant 10 secondes. Vous pouvez voir le symbole du tampon.

Après 10 secondes, il commencera à reprendre le code donc, il affichera l'heure de fin, c'est-à-dire après avoir attendu 10 secondes quelle est l'heure actuelle.

Vous pouvez maintenant voir la macro a commencé à 10:54:14 et s'est terminée à 10:54:24, c'est-à-dire que la différence de 10 secondes est là. Dans ces 10 secondes, VBA suspend l'exécution du code.

Exemple # 2 - Fonction de veille dans les boucles

Le sommeil est mieux utilisé avec les boucles dans VBA. Par exemple, je veux insérer des numéros de série de 1 à 10 en utilisant la boucle Do while dans VBA.

Après avoir inséré le numéro unique, mon code devrait attendre 3 secondes, donc lorsque la boucle s'exécute 10 fois, cela devrait durer 30 secondes au total.

Code:

 Sub Sleep_Example2 () Dim k As Integer k = 1 Do While k <= 10 Cells (k, 1) .Value = kk = k + 1 Sleep (3000) '1000 millisecondes est 1 seconde donc 3000 est égal à 3 secondes Loop End Sous 

Exécutez ce code et vous devez attendre au moins 30 secondes pour terminer le processus.

Pour suivre l'heure exacte, utilisez le code ci-dessous.

Code:

 Sub Sleep_Example2 () Dim k As Integer Dim StartTime As String Dim EndTime As String StartTime = Time MsgBox "Votre code a commencé à" & StartTime k = 1 Do While k <= 10 Cells (k, 1) .Value = kk = k + 1 Sleep (3000) '1000 milliseonds est 1 seconde donc 3000 est égal à 3 secondes Loop EndTime = Time MsgBox "Your Code Ended at" & EndTime End Sub 

Ce code vous affichera 2 boîte de message, le premier affichera l'heure de début et le second affichera l'heure de fin.

Remarque: lors de l' exécution de ce code, vous ne pouvez pas utiliser Excel, même la touche d'échappement ne fonctionnera pas.