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

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

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

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

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

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

Για παράδειγμα, εάν εκτελείτε τον κωδικό στις 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")) Εύρος (" A3 "). Value =" To VBA "End Sub

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

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

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

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

Κώδικας:

#If 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 δευτερόλεπτα. Στο τέλος, ο χρόνος μου έχει ως εξής.

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

ενδιαφέροντα άρθρα...