Λειτουργία αναμονής VBA | Πώς να χρησιμοποιήσετε τη μέθοδο αναμονής Excel VBA;

Λειτουργία αναμονής Excel VBA

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

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

"Περιμένετε" καθώς το ίδιο το όνομα λέει ότι θα κρατήσει τον κώδικα μακροεντολής που θα εκτελεστεί σε ένα καθορισμένο χρονικό πλαίσιο. Χρησιμοποιώντας αυτήν τη μέθοδο πρέπει να καθορίσουμε την ώρα που θα σταματήσει ο κώδικάς μας, θα δούμε παραδείγματα στη συνέχεια.

Η σύνταξη της συνάρτησης WAIT έχει ως εξής.

Πρέπει να αναφέρουμε το χρονικό διάστημα παύσης του κώδικα. Όπως μπορείτε να δείτε στο τέλος λέει Boolean, αυτό σημαίνει ότι επιστρέφει το αποτέλεσμα ως Boolean τιμές, δηλαδή TRUE ή FALSE.

Μέχρι να φτάσει η καθορισμένη ώρα, λέει FALSE και η στιγμή που έφτασε η ώρα επιστρέφει ΑΛΗΘΕΙΑ.

Αυτό είναι διαφορετικό από τη συνάρτηση SLEEP, επειδή το WAIT είναι μια ενσωματωμένη συνάρτηση όπου το SLEEP είναι μια συνάρτηση των Windows. Πριν αποκτήσουμε πρόσβαση στη συνάρτηση SLEEP, πρέπει να αναφέρουμε τον παρακάτω κώδικα στην κορυφή της ενότητας. Αλλά το WAIT δεν το απαιτεί αυτό.

Κώδικας:

# Εάν 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)' Για συστήματα 32 Bit Λήξη εάν 

Παραδείγματα χρήσης της λειτουργίας Wait Excel VBA

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

Παράδειγμα # 1

Ας υποθέσουμε ότι εργάζεστε σε ένα excel μεσημέρι στις 14:30:00 και θέλετε ο κώδικάς σας να τεθεί σε παύση έως ότου γίνει η ώρα 14:40:00. Μπορείτε να χρησιμοποιήσετε τον παρακάτω κωδικό.

Κώδικας:

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

Ο κώδικας θα σταματήσει να λειτουργεί από το excel σας μέχρι να φτάσει η ώρα στις 14:40:00 στο λειτουργικό σας σύστημα. Η παροχή τέτοιου χρόνου είναι επικίνδυνη επειδή δεν δουλεύουμε πάντα από τις 14:30:00 συνεχίζει να ποικίλλει συνεχώς.

Ας πούμε όποτε εκτελείτε τον κωδικό που θέλετε να περιμένετε για 2 λεπτά, πώς το αναφέρετε στον κωδικό σας;

Έτσι, μπορούμε να χρησιμοποιήσουμε τη συνάρτηση VBA NOW με τη συνάρτηση TIME VALUE για να εισάγουμε την καθορισμένη ώρα από την τρέχουσα ώρα.

Για να σας υπενθυμίσω ΤΩΡΑ () η λειτουργία επιστρέφει την τρέχουσα ημερομηνία και ώρα σύμφωνα με το σύστημα του υπολογιστή σας. Η συνάρτηση TIMEVALUE αντιπροσωπεύει την ώρα από 00:00:00 έως 23:59:59 δηλαδή 11:59:59 μ.μ. σε μορφή 24 ωρών. Μετατρέπει την τιμή συμβολοσειράς σε τιμή χρόνου.

Για παράδειγμα ΤΩΡΑ () + ΧΡΟΝΟΣ (00:02:30) σημαίνει Τρέχουσα Ώρα + 2 λεπτά 30 δευτερόλεπτα.

Εάν η τρέχουσα ώρα είναι 14:25:30 τότε γίνεται 14:28:00.

Για να σταματήσετε ή να διακόψετε την εκτέλεση του κωδικού σας από την τρέχουσα ώρα έως τα επόμενα 10 λεπτά, μπορείτε να χρησιμοποιήσετε τον παρακάτω κώδικα.

Κώδικας:

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

Είναι σημαντικό να χρησιμοποιήσετε τη συνάρτηση NOW () για ακριβή παύση, διαφορετικά, υπάρχουν πιθανότητες το βιβλίο εργασίας σας excel να σταματήσει μέχρι τα μεσάνυχτα. Ωστόσο, μπορούμε να βγούμε από τη μέθοδο παύσης ανά πάσα στιγμή πατώντας το πλήκτρο Esc ή το πλήκτρο Break.

Παράδειγμα # 2

Περιμένετε 10 δευτερόλεπτα κάθε φορά που εκτελείται ο βρόχος

Η μέθοδος αναμονής χρησιμοποιείται καλά με βρόχους. Υπάρχουν καταστάσεις όπου ίσως χρειαστεί να περιμένετε 10 δευτερόλεπτα κάθε φορά που εκτελείται βρόχος. Για παράδειγμα, δείτε τα παρακάτω δεδομένα.

Για να υπολογίσετε το κέρδος = (Πωλήσεις - Κόστος) θέλετε να δημιουργήσετε έναν βρόχο και μετά από κάθε βρόχο, θέλετε να περιμένετε 10 δευτερόλεπτα για να ελέγξετε αν το αποτέλεσμα είναι ακριβές ή όχι. Ο παρακάτω κώδικας θα το κάνει αυτό.

Κώδικας:

 Sub Wait_Example3 () Dim k As Integer For k = 2 to 9 Cells (k, 4). Value = Cells (k, 2) - Cells (k, 3) Application. Περιμένετε (Now () + TimeValue ("00:00 : 10 ")) Επόμενο k End Sub 

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

VBA Sleep vs VBA Wait

VBA SLEEP VBA ΠΕΡΙΜΕΝΕΤΕ
Δεν είναι μια ενσωματωμένη λειτουργία VBA, χρειάζεται έναν ειδικό κωδικό για πρόσβαση σε αυτήν τη λειτουργία. Είναι μια ενσωματωμένη συνάρτηση VBA, δεν απαιτεί ειδικό κωδικό για πρόσβαση σε αυτήν τη λειτουργία.
Ο ύπνος απαιτεί χιλιοστά του δευτερολέπτου ως το χρονικό πλαίσιο. Περιμένετε απαιτεί ένα κανονικό χρονικό πλαίσιο.
Μπορούμε να καθυστερήσουμε τον κώδικα σε χιλιοστά του δευτερολέπτου Μπορούμε να καθυστερήσουμε μόνο σε ολόκληρα δευτερόλεπτα.