Παύση VBA | Παύση κώδικα VBA χρησιμοποιώντας τη λειτουργία αναμονής και αναμονής

Παύση του κώδικα VBA από την εκτέλεση

Το VBA Pause χρησιμοποιείται για την παύση του κώδικα από την εκτέλεση για συγκεκριμένο χρονικό διάστημα και για την παύση ενός κώδικα στο VBA χρησιμοποιούμε τη μέθοδο application.wait.

Όταν κατασκευάζουμε μεγάλα έργα VBA αφού εκτελέσουμε κάτι, ίσως χρειαστεί να περιμένουμε λίγο χρόνο για να κάνουμε άλλες εργασίες. Σε τέτοια σενάρια πώς διακόπτουμε τον κώδικα μακροεντολών για να κάνουμε την εργασία μας; Μπορούμε να θέσουμε σε παύση τον κωδικό VBA για μια καθορισμένη χρονική περίοδο χρησιμοποιώντας δύο συναρτήσεις και αυτές οι λειτουργίες είναι "Wait" & "Sleep".

Πώς να διακόψετε τον κώδικα χρησιμοποιώντας τη μέθοδο αναμονής;

Το "Wait" είναι η λειτουργία που χρησιμοποιούμε στο VBA για να κρατήσουμε τη μακροεντολή σε λειτουργία για ένα συγκεκριμένο χρονικό διάστημα. Εφαρμόζοντας αυτήν τη συνάρτηση πρέπει να αναφέρουμε μέχρι τι ώρα πρέπει να περιμένει ο κώδικάς μας.

Μπορείτε να κάνετε λήψη αυτού του προτύπου VBA Pause Excel - Πρότυπο VBA Pause Excel

Για παράδειγμα, εάν εκτελείτε τον κωδικό στις 13:00:00 εάν δώσετε την ώρα ως "13:15:00" τότε θα κρατήσει τη μακροεντολή σε λειτουργία για 15 λεπτά.

Τώρα, δείτε το επιχείρημα της συνάρτησης WAIT στο VBA.

Στο χρονικό όρισμα πρέπει να αναφέρουμε σε ποια ώρα ο κώδικας πρέπει να σταματήσει ή να περιμένει.

Για παράδειγμα, δείτε τον παρακάτω κώδικα VBA.

Κώδικας:

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

Θυμηθείτε κατά την εκτέλεση αυτού του κωδικού η ώρα του συστήματός μου είναι 13:00:00, μόλις εκτελέσω τον κώδικα θα εκτελέσει τις δύο πρώτες γραμμές, δηλαδή

Εύρος ("A1"). Value = "Hello" & Range ("A2"). Value = "Welcome"

Αλλά αν κοιτάξετε την επόμενη γραμμή λέει Εφαρμογή. Περιμένετε ("13:15:00"), οπότε μετά την εκτέλεση αυτών των γραμμών, η μακροεντολή μου θα σταματήσει για 15 λεπτά, δηλαδή από τις 13:00:00 θα περιμένει μέχρι το σύστημά μου ο χρόνος φτάνει στις 13:15:01.

Μόλις φτάσει η ώρα του συστήματός μου, θα εκτελέσει τις υπόλοιπες γραμμές κώδικα.

Εύρος ("A3"). Value = "To VBA"

Ωστόσο, αυτός δεν είναι ο καλύτερος τρόπος εξάσκησης του κώδικα παύσης, ας υποθέσουμε ότι εκτελείτε τον κώδικα σε διαφορετικές χρονικές στιγμές, τότε πρέπει να χρησιμοποιήσουμε τη συνάρτηση NOW VBA με τη λειτουργία TIME VALUE.

Η συνάρτηση Now επιστρέφει την τρέχουσα ημερομηνία και ώρα σύμφωνα με το σύστημα στο οποίο εργαζόμαστε.

Η συνάρτηση TIME Value κρατά την ώρα από 00:00:00 έως 23:59:29.

Εντάξει, ας υποθέσουμε ότι πρέπει να θέσουμε σε παύση τον κωδικό για 10 λεπτά κάθε φορά που εκτελούμε τον κώδικα και μετά μπορούμε να χρησιμοποιήσουμε τον παρακάτω κώδικα.

Κώδικας:

 Sub Pause_Example1 () Range ("A1"). Value = "Hello" Range ("A2"). Value = "Welcome" Application.Wait (Now () + TimeValue ("00:00:10")) Εύρος (" Α3 "). Τιμή =" Προς VBA "Τελικό υποτμήμα 

Αυτό είναι παρόμοιο με τον προηγούμενο κώδικα, αλλά η μόνη διαφορά είναι ότι έχουμε προσθέσει τη συνάρτηση NOW & TIME VALUE.

Κάθε φορά που εκτελούμε αυτόν τον κωδικό, θα κρατήσει ή θα θέσει σε παύση την εκτέλεση για 10 λεπτά.

Πώς να θέσετε σε παύση τον κώδικα VBA χρησιμοποιώντας τη μέθοδο Sleep

Ο ύπνος είναι μια περίπλοκη λειτουργία στο VBA επειδή δεν είναι ενσωματωμένη λειτουργία. Επειδή δεν είναι ενσωματωμένο για να το διαθέσουμε στη χρήση, πρέπει να προσθέσουμε τον παρακάτω κώδικα στην κορυφή της ενότητας.

Κώδικας:

# Εάν VBA7 Τότε Δηλώστε Δημόσιο 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' For Systems 32 Bit 

Απλά πρέπει να αντιγράψετε τον παραπάνω κώδικα και να τον επικολλήσετε στην κορυφή της ενότητας.

Ο λόγος για τον οποίο πρέπει να προσθέσουμε τον παραπάνω κώδικα επειδή το SLEEP είναι μια συνάρτηση VBA που παρουσιάζεται στα αρχεία DLL των Windows, επομένως πρέπει να δηλώσουμε την ονοματολογία πριν ξεκινήσουμε την υποδιαδικασία.

Εντάξει, ας δούμε το παράδειγμα της λειτουργίας SLEEP τώρα.

Κώδικας:

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

Πρώτον, έχουμε δηλώσει δύο μεταβλητές ως String.

 Dim StartTime As String Dim EndTime As String 

Στη συνέχεια, έχουμε εκχωρήσει τη συνάρτηση TIME excel στη μεταβλητή StartTime. Η συνάρτηση TIME επιστρέφει την τρέχουσα ώρα σύμφωνα με το σύστημα.

StartTime = Ώρα

Στη συνέχεια, έχουμε αναθέσει το ίδιο για εμφάνιση στο πλαίσιο μηνύματος.

MsgBox StartTime

Τότε έχω εφαρμόσει τη λειτουργία SLEEP ως Sleep (10000).

Εδώ το 10000 είναι χιλιοστά του δευτερολέπτου που ισούται με 10 δευτερόλεπτα στο VBA.

Στη συνέχεια, επιτέλους, έχω εκχωρήσει μια ακόμη συνάρτηση TIME στη μεταβλητή EndTime .

Τώρα πάλι έγραψα έναν κωδικό για να δείξω την ώρα.

EndTime = Ώρα

Αυτό θα δείξει τη διαφορά μεταξύ της ώρας έναρξης και της ώρας λήξης.

Τώρα θα εκτελέσω τον κώδικα και θα δω ποια είναι η ώρα έναρξης.

Όταν εκτελώ τον κωδικό, ο χρόνος του συστήματός μου είναι 13:40:48 και τώρα ο κώδικάς μου θα αδράξει για 10 δευτερόλεπτα. Στο τέλος, ο χρόνος μου έχει ως εξής.

Έτσι, έτσι, μπορούμε να θέσουμε σε παύση τον κώδικα από την εκτέλεση του για συγκεκριμένο χρονικό διάστημα.