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

Πίνακας περιεχομένων

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

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

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

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

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

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

Μέχρι να φτάσει η καθορισμένη ώρα, λέει FALSE και όταν φτάσει η καθορισμένη ώρα, επιστρέφει TRUE.

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

Κώδικας:

# Εάν VBA7 Τότε Δηλώστε Δημόσια PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds as LongPtr) 'For Systems 64 Bit #Else Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds as Long)' Για συστήματα 32 Bit λήγουν εάν

Παραδείγματα χρήσης της λειτουργίας Wait Excel 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 για να εισάγουμε την καθορισμένη ώρα από την τρέχουσα ώρα.

Για να σας υπενθυμίσω, η συνάρτηση NOW () επιστρέφει την τρέχουσα ημερομηνία και ώρα σύμφωνα με το σύστημα του υπολογιστή σας. Η συνάρτηση 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 ή το πλήκτρο διακοπής .

Παράδειγμα # 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 εναντίον VBA Wait

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

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