Fonction de veille Excel VBA pour suspendre votre code de macro

Table des matières

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 son nom l'indique, «dormir pendant un certain temps», «se reposer pendant un certain temps», «faire une pause pendant un certain temps», s'absenter pendant un certain temps », etc. . 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 telle fonction. Nous avons plutôt une fonction appelée Sleep en tant que fonction Windows. En entrant un ensemble spécial de codes, 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:

#Si VBA7 Then Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr) 'Pour les versions 64 bits d'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.

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 , affectez 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, cela 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 de 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 afin qu'il affiche 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 des boucles dans VBA. Par exemple, je souhaite 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 équivaut à 1 seconde donc 3000 est égal à 3 secondes Fin de boucle 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îtes de message, la première affichera l'heure de début et la seconde 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.

Articles intéressants...