Το "Άμεσο παράθυρο" μπορεί να είναι ένα χρήσιμο εργαλείο για χρήση όταν εργάζεστε με VBA στο Excel.
Το άμεσο παράθυρο σάς επιτρέπει να κάνετε γρήγορα πράγματα όπως:
- Λάβετε πληροφορίες σχετικά με αρχεία Excel (όπως ο αριθμός φύλλων σε ένα βιβλίο εργασίας ή το όνομα του βιβλίου εργασίας)
- Λάβετε γρήγορα πληροφορίες Debug.Print
- Εκτελέστε μια γραμμή κώδικα σε δευτερόλεπτα
- Εκτέλεση μακροεντολής (ή κλήση συνάρτησης)
- Λάβετε πληροφορίες σχετικά με μεταβλητές (ή ορίστε την τιμή ή τις μεταβλητές)
Παρόλο που δεν χρειάζεται να χρησιμοποιήσετε το άμεσο παράθυρο για να εργαστείτε με το VBA στο Excel, το να γνωρίζετε πώς να το χρησιμοποιήσετε καλά μπορεί να σας κάνει πολύ πιο αποτελεσματικούς.
Σε αυτό το σεμινάριο, θα καλύψω όλα όσα πρέπει να γνωρίζετε για το άμεσο παράθυρο και πώς να το χρησιμοποιήσετε καλύτερα (εξηγείται με παραδείγματα).
Ας αρχίσουμε!
Τι είναι ένα άμεσο παράθυρο στο Excel VBA;
Το άμεσο παράθυρο είναι ένα μέρος του VB Editor το οποίο μπορείτε να χρησιμοποιήσετε για να κάνετε γρήγορα πράγματα.
Για να σας δώσω ένα παράδειγμα, εάν έχετε ένα βιβλίο εργασίας με μερικά κρυμμένα φύλλα εργασίας και θέλετε να μάθετε γρήγορα τον αριθμό των συνολικών φύλλων εργασίας, μπορείτε να το κάνετε σε λίγα δευτερόλεπτα με το παράθυρο Άμεση.
Το Immediate Window κάνει πολλά περισσότερα (όπως θα δείτε αργότερα σε αυτό το σεμινάριο). Αλλά για αρχή, ας σκεφτούμε το άμεσο παράθυρο ως ένα εργαλείο που θα σας βοηθήσει να επιταχύνετε την εργασία σας στο Excel VBA.
Πού να βρείτε το άμεσο παράθυρο;
Όταν ανοίγετε το Excel VB-Editor, ενδέχεται να δείτε ήδη το άμεσο παράθυρο ως μέρος του VB Editor. Και αν δεν το βλέπετε ήδη, μπορείτε εύκολα να το κάνετε να εμφανιστεί.
Παρακάτω είναι τα βήματα για να ανοίξετε το πρόγραμμα επεξεργασίας VB και να κάνετε ορατό το άμεσο παράθυρο:
- Κάντε κλικ στην καρτέλα "Προγραμματιστής" στην κορδέλα του Excel (εάν δεν βλέπετε την καρτέλα προγραμματιστή, κάντε κλικ εδώ για να μάθετε πώς να το αποκτήσετε)
- Στην ομάδα κωδικών, κάντε κλικ στο «Visual Basic». Αυτό θα ανοίξει το πρόγραμμα επεξεργασίας VB
- Στο πρόγραμμα επεξεργασίας VB, κάντε κλικ στην επιλογή «Προβολή» στο μενού
- Κάντε κλικ στο Άμεσο παράθυρο. Αυτό θα κάνει το άμεσο παράθυρο να εμφανιστεί στο VB Editor.
Εάν είστε πιο άνετοι με τις συντομεύσεις, παρακάτω θα βρείτε ορισμένα για να επιταχύνετε τα παραπάνω βήματα:
- Για να ανοίξετε το VB Editor - ALT + F11 (αυτό λειτουργεί ακόμη και αν δεν έχετε την καρτέλα Developer στην κορδέλα)
- Για να εμφανιστεί το άμεσο παράθυρο - Control + G (χρησιμοποιήστε αυτό το VB Editor είναι ανοιχτό)
Παραδείγματα χρήσης του άμεσου παραθύρου στο Excel VBA
Τώρα που ξέρετε πού να βρείτε το άμεσο παράθυρο, ας δούμε μερικά φοβερά παραδείγματα όπου μπορείτε να το χρησιμοποιήσετε όταν εργάζεστε με το Excel VBA.
Λάβετε πληροφορίες σχετικά με τα αρχεία/βιβλία εργασίας
Το «Άμεσο παράθυρο» είναι ένα μέρος όπου μπορείτε να κάνετε ερωτήσεις σχετικά με τα βιβλία εργασίας και θα σας δώσει την απάντηση αμέσως.
Για παράδειγμα, ας υποθέσουμε ότι έχετε ένα βιβλίο εργασίας και θέλετε να μάθετε πόσα φύλλα υπάρχουν στο βιβλίο εργασίας, μπορείτε να πληκτρολογήσετε τον παρακάτω κώδικα στο άμεσο παράθυρο και να πατήσετε το πλήκτρο εισαγωγής.
? ActiveWorkbook.Sheets.Count
Αυτό θα σας πει αμέσως τον συνολικό αριθμό φύλλων στο ενεργό βιβλίο εργασίας.
Αυτό μπορεί να είναι χρήσιμο όταν έχετε ένα βιβλίο εργασίας που έχει πολλά φύλλα και δεν μπορείτε να το μετρήσετε χειροκίνητα (ή δεν θέλετε) ή όταν έχετε ένα βιβλίο εργασίας όπου υπάρχουν κρυμμένα φύλλα και θέλετε να μάθετε το σύνολο μετρώ.
Ο ? (ερωτηματικό) υποτίθεται ότι χρησιμοποιείται πριν από το ερώτημα, έτσι ώστε η VBA να καταλάβει ότι κάνετε μια ερώτηση. Εάν δεν χρησιμοποιείτε αυτό το ερωτηματικό, το άμεσο παράθυρο δεν θα σας δώσει λεπτομέρειες/απαντήσεις.Τώρα, αυτό είναι ένα πραγματικά απλό παράδειγμα όπου το Immediate Window σας δίνει κάποιες πληροφορίες και εξοικονομεί χρόνο.
Παρακάτω είναι μερικά ακόμη παραδείγματα:
Για να λάβετε το όνομα του ενεργού βιβλίου εργασίας
? ActiveWorkbook.Name
Για να λάβετε το όνομα του ενεργού φύλλου
? Activesheet. Όνομα
Για να λάβετε τη διαδρομή του βιβλίου εργασίας (η διεύθυνση όπου είναι αποθηκευμένο)
? ActiveWorkbook.Path
Έτσι, εάν χρειάζεστε κάτι για ένα αντικείμενο (όπως τετράδιο εργασίας, φύλλα, γραφήματα, σχήματα, εύρος κ.λπ.), μπορείτε να χρησιμοποιήσετε το άμεσο παράθυρο για να λάβετε γρήγορα αυτές τις πληροφορίες.
Λήψη πληροφοριών εντοπισμού σφαλμάτων. Εκτύπωση
Στο Excel VBA, το Debug.Print χρησιμοποιείται για την άμεση εμφάνιση της τιμής μιας μεταβλητής στο άμεσο παράθυρο.
Για παράδειγμα, ο παρακάτω κώδικας θα εμφανίσει αμέσως το μήνυμα "Καλημέρα" στο αμέσως παράθυρο.
Sub DisplayMessage () Debug.Print "Good Morning" End Sub
Μπορείτε να χρησιμοποιήσετε τη γραμμή Debug.Print στον κώδικά σας για να λάβετε γρήγορα κάποια δεδομένα στο άμεσο παράθυρο ή για να διορθώσετε τον κωδικό σας.
Για παράδειγμα, εάν θέλετε να λάβετε τα ονόματα όλων των φύλλων σε ένα βιβλίο εργασίας, μπορείτε να χρησιμοποιήσετε τον παρακάτω κώδικα:
Sub GetSheetNames () Για κάθε sh στο ActiveWorkbook.Sheets Debug.Print sh. Όνομα Επόμενο sh Τέλος Sub
Ο παραπάνω κώδικας περνά από κάθε φύλλο στο ενεργό βιβλίο εργασίας και δίνει το όνομα στο άμεσο παράθυρο.
Το Debug.Print είναι μια χρήσιμη τεχνική για τον εντοπισμό σφαλμάτων στον κώδικά σας. Για παράδειγμα, εάν εκτελείτε έναν βρόχο και θέλετε να δείτε πόσες φορές εκτελέστηκε ο βρόχος, μπορείτε απλά να τοποθετήσετε μια γραμμή Debug.Print που δείχνει απλά τους αυξανόμενους αριθμούς όταν εκτελείται κάθε βρόχος.
Εάν χρησιμοποιείτε Σφάλμα. Εκτύπωση για να διορθώσετε τον κωδικό, θυμηθείτε να τον αφαιρέσετε όταν τελειώσετε.
Εκτέλεση μακροεντολής (ή συνάρτησης)
Ενώ υπάρχουν διάφοροι τρόποι εκτέλεσης μιας μακροεντολής στο Excel, ένας από τους γρήγορους τρόπους είναι η χρήση του άμεσου παραθύρου.
Για να εκτελέσετε μια μακροεντολή, το μόνο που χρειάζεται να κάνετε είναι να εισαγάγετε το όνομα της μακροεντολής στο άμεσο παράθυρο και να πατήσετε το πλήκτρο εισαγωγής (ο δρομέας πρέπει να βρίσκεται στο τέλος του ονόματος της μακροεντολής για να λειτουργήσει αυτό).
Παρακάτω είναι ένα παράδειγμα, όπου μόλις εισαγάγετε το όνομα της μακροεντολής στο άμεσο παράθυρο, εκτελεί τον κώδικα (όπου ο κώδικας εμφανίζει το μήνυμα "Καλημέρα" στο αμέσως παράθυρο).
Αυτό μπορεί να είναι χρήσιμο όταν έχετε έναν κωδικό και θέλετε να ελέγξετε αν λειτουργεί όπως αναμενόταν ή όχι. Μπορείτε να έχετε μία ή περισσότερες γραμμές εντοπισμού σφαλμάτων. Εκτύπωση στον κώδικα και εκτέλεση της μακροεντολής από το άμεσο παράθυρο.
Θα σας δείξει αμέσως τις τιμές στο άμεσο παράθυρο και μπορείτε να ελέγξετε αν όλα λειτουργούν καλά ή όχι.
Μπορείτε επίσης να χρησιμοποιήσετε το άμεσο παράθυρο για να εκτελέσετε προσαρμοσμένες λειτουργίες επίσης.
Για παράδειγμα, στο παρακάτω παράδειγμα, δημιουργείται μια συνάρτηση για να ελέγξει εάν ένας αριθμός είναι ζυγός ή περιττός. Μπορείτε να εκτελέσετε αυτήν τη συνάρτηση από το άμεσο παράθυρο πληκτρολογώντας τη συνάρτηση με το όρισμα που χρειάζεται. Πρέπει να χρησιμοποιήσετε το ερωτηματικό σε αυτήν την περίπτωση καθώς το ζητάτε να μην επιστρέψει μια τιμή αποθηκευμένη στη συνάρτηση.
Εκτέλεση μιας γραμμής κώδικα (ή πολλαπλών γραμμών κώδικα)
Με το άμεσο παράθυρο, μπορείτε επίσης να εκτελέσετε μια γραμμή κώδικα (ή πολλαπλές γραμμές κωδικών).
Το καλύτερο μέρος για αυτό είναι ότι μπορείτε απλά να ανοίξετε το άμεσο παράθυρο, να εκτελέσετε τον κώδικα και να το κλείσετε (σε αντίθεση με μια μακροεντολή που πρέπει να βάλετε σε ένα παράθυρο μονάδας και στη συνέχεια να εκτελέσετε).
Μια περίπτωση χρήσης όπου αυτό μπορεί να είναι χρήσιμο είναι όταν θέλετε να αποκρύψετε γρήγορα όλα τα φύλλα στο βιβλίο εργασίας.
Παρακάτω είναι ο κώδικας που μπορείτε να τοποθετήσετε στο άμεσο παράθυρο για να αποκρύψετε όλα τα φύλλα στο βιβλίο εργασίας. Τοποθετήστε τον κέρσορα στο τέλος της γραμμής και μόλις πατήσετε το πλήκτρο εισαγωγής, θα εμφανίσει όλα τα φύλλα.
Για κάθε φύλλο σε αυτό το βιβλίο εργασίας. Φύλλα: Sheet.Visible = True: Next Sheet
Σημειώστε ότι παρόλο που μοιάζει με μια μόνο γραμμή κώδικα, αποτελείται από τρία μέρη.
Κάθε τμήμα χωρίζεται με ένα: (άνω και κάτω τελεία), το οποίο λειτουργεί σαν διακοπή γραμμής. Αυτό σας επιτρέπει να χρησιμοποιήσετε τον βρόχο For Next στο άμεσο παράθυρο για να περάσετε από κάθε φύλλο και να αλλάξετε την ορατή ιδιότητα σε TRUE (που αποκρύπτει οποιοδήποτε κρυφό φύλλο).
Λάβετε μεταβλητές τιμές
Καθώς ξεκινάτε να δημιουργείτε πολύπλοκους κώδικες VBA, θα πρέπει να βασίζεστε σε μεταβλητές για να κάνετε τη δουλειά.
Μια μεταβλητή είναι κάτι που περιέχει μια τιμή και αυτή η τιμή μπορεί να αλλάξει όταν εκτελείται ο κώδικας. Μπορείτε να χρησιμοποιήσετε ένα άμεσο παράθυρο για να ελέγξετε αυτές τις τιμές μεταβλητών.
Παρακάτω είναι ένας απλός κώδικας που δίνει το άθροισμα των πρώτων 10 θετικών ακεραίων και δείχνει το αποτέλεσμα στο άμεσο παράθυρο.
Sub AddFirstTenNumbers () Dim Var As Integer Dim i As Integer Dim k As Integer Για i = 1 έως 10 k = k + i Next i Debug. Εκτύπωση i, k Τέλος υπο
Μόλις εκτελέσετε αυτόν τον κώδικα, θα δείτε το παρακάτω αποτέλεσμα στο άμεσο παράθυρο. Αυτό σας λέει αμέσως ότι ο κώδικας λειτουργεί καλά και δίνει το αναμενόμενο αποτέλεσμα.
Σε περίπτωση που δεν δίνει τα αναμενόμενα αποτελέσματα, μπορείτε να εντοπίσετε σφάλματα στον κώδικα.
Πολλοί άνθρωποι χρησιμοποιούν ένα πλαίσιο μηνυμάτων κατά τον εντοπισμό σφαλμάτων του κώδικα. Ενώ λειτουργεί καλά, το βρίσκω λίγο παρεμβατικό καθώς με μεταφέρει στο βιβλίο εργασίας του Excel και εμφανίζει ένα πλαίσιο μηνυμάτων. Από την άλλη πλευρά, η χρήση του άμεσου παραθύρου για εντοπισμό σφαλμάτων είναι πολύ πιο ομαλή και με κρατά στον ίδιο τον επεξεργαστή της Visual Basic.
Σημείωση: Εάν εργάζεστε με έναν πολύπλοκο κώδικα και έχετε πολλές μεταβλητές που πρέπει να παρακολουθείτε, είναι προτιμότερο να χρησιμοποιήσετε ένα παράθυρο παρακολούθησης. Ένα παράθυρο παρακολούθησης σάς επιτρέπει να προσθέσετε μια μεταβλητή και, στη συνέχεια, μπορείτε να δείτε πώς αλλάζει αυτή η μεταβλητή σε πραγματικό χρόνο (ή καθώς περπατάτε στον κώδικα).Ορίστε τιμή μεταβλητής κατά τον εντοπισμό σφαλμάτων
Αυτή είναι μια λίγο προηγμένη χρήση του άμεσου παραθύρου, αλλά αν το χρησιμοποιήσετε, μπορεί να είναι μια τεράστια εξοικονόμηση χρόνου κατά τον εντοπισμό σφαλμάτων στον κώδικα.
Μπορείτε να χρησιμοποιήσετε το άμεσο παράθυρο για να ορίσετε την τιμή μιας μεταβλητής ενώ εκτελείτε τον κώδικα στη λειτουργία εντοπισμού σφαλμάτων (όπου ορίζετε ένα σημείο διακοπής ώστε ο κώδικας να μην εκτελείται πλήρως - αλλά μέχρι μια συγκεκριμένη γραμμή).
Για παράδειγμα, εάν έχετε έναν βρόχο που εκτελείται 10 φορές και θέλετε να ελέγξετε τι συμβαίνει όταν ο βρόχος εκτελείται για 8η φορά, δεν χρειάζεται να περπατήσετε επτά φορές τον βρόχο για να φτάσετε στην όγδοη επανάληψη. Μπορείτε απλά να προσθέσετε ένα σημείο διακοπής πριν από τον βρόχο και να αλλάξετε τη μεταβλητή βρόχου σε 8. Τώρα, όταν εκτελείτε τον κώδικα, θα σας δείξει τι συμβαίνει όταν οι βρόχοι εκτελούνται για 8η φορά.
Αυτό γίνεται πολύ πιο χρήσιμο όταν γράφετε περίπλοκους κώδικες και θέλετε να εντοπίσετε σφάλματα σε συγκεκριμένους βρόχους.
Ας υποθέσουμε ότι έχετε έναν κωδικό όπως φαίνεται παρακάτω:
Sub UnhideSheets () For i = 1 To Worksheets. Count Debug. Print Sheets (i). Name Next i End Sub
Ο παραπάνω κώδικας απαριθμεί απλώς τα ονόματα φύλλων όλων των φύλλων στο βιβλίο εργασίας στο άμεσο παράθυρο.
Εάν δεν θέλετε να απαριθμήσετε τα ονόματα όλων των φύλλων, αλλά μόνο τα φύλλα μετά το 10ο φύλλο, μπορείτε να τοποθετήσετε ένα σημείο διακοπής στη δεύτερη γραμμή του βρόχου (έτσι ώστε να μην εκτελεστεί τίποτα μετά από αυτήν τη γραμμή) και στη συνέχεια να αλλάξετε μεταβλητή «i» έως 11.
Για να αλλάξετε το όνομα της μεταβλητής στο άμεσο παράθυρο, εισαγάγετε την ακόλουθη γραμμή:
i = 11
Αυτό θα διασφαλίσει ότι οι πρώτες 10 φορές του βρόχου αγνοούνται και η τιμή της μεταβλητής σας θα οριστεί σε 11.
Σύνδεση/Αποσύνδεση του άμεσου παραθύρου
Μπορείτε να συνδέσετε αμέσως το παράθυρο στο VB Editor - πράγμα που σημαίνει ότι παραμένει σε ένα σημείο στο VB Editor και μετακινείται και μεγεθύνεται μαζί του.
Και μπορείτε επίσης να το αποσυνδέσετε, πράγμα που σημαίνει ότι είναι ανεξάρτητο από τον επεξεργαστή VB και μπορεί να μετακινηθεί ως αυτόνομο παράθυρο.
Παρακάτω είναι πώς μπορείτε να αλλάξετε τις ρυθμίσεις σύνδεσης για το άμεσο παράθυρο:
- Κάντε κλικ στην επιλογή Εργαλεία στο μενού του VB Editor
- Κάντε κλικ στο «Επιλογές»
- Στο παράθυρο διαλόγου Επιλογές, κάντε κλικ στην τελευταία καρτέλα - Βάση σύνδεσης
- Ελέγξτε την επιλογή Άμεσο παράθυρο για να το συνδέσετε και αποεπιλέξτε το για να το καταργήσετε.
- Κάντε κλικ στο OK
Εναλλακτικά, εάν το άμεσο παράθυρο είναι ορατό, μπορείτε επίσης να κάνετε δεξί κλικ και να αλλάξετε τη δυνατότητα σύνδεσης του.
Το Dockable σημαίνει ότι το άμεσο παράθυρο θα γίνει μέρος του υπάρχοντος παραθύρου τοποθετώντας το σε ορισμένα σημεία, όπως στα αριστερά του παραθύρου ή στο κάτω μέρος. Αυτό επιτρέπει στα συνδεδεμένα παράθυρα να κινούνται και να μεγεθύνονται μαζί.
Το άμεσο παράθυρο δεν εμφανίζεται - εδώ είναι μερικοί τρόποι για να το αποκτήσετε
Μπορεί να υπάρχουν πολλοί λόγοι για να συμβεί αυτό.
Ο πιο συνηθισμένος λόγος που δεν βλέπετε ένα άμεσο παράθυρο είναι ότι δεν έχει γίνει ορατό. Μπορεί να μην είναι ορατό από προεπιλογή και για να εμφανιστεί, πρέπει να μεταβείτε στην επιλογή Προβολή στο μενού και να κάνετε κλικ στην επιλογή Άμεσο παράθυρο. Αυτό θα βεβαιωθεί ότι είναι ορατό στο VB Editor.
Μπορείτε επίσης να χρησιμοποιήσετε το πληκτρολόγιο Control + G για να εμφανιστεί το άμεσο παράθυρο. Χρησιμοποιήστε αυτήν τη συντόμευση πληκτρολογίου ενώ βρίσκεστε στο πρόγραμμα επεξεργασίας VB.
Ένας άλλος λόγος που μπορεί να μην βλέπετε το άμεσο παράθυρο είναι ότι έχει ελαχιστοποιηθεί είναι τώρα τόσο κλειστό που δεν μπορείτε να το δείτε (όπως αναφέρεται εδώ). Απλώς κάντε μια γρήγορη σάρωση και ελέγξτε αν βλέπετε ένα μικρό μπλε/κόκκινο τετράγωνο να κρύβεται κάπου. Μπορείτε να τοποθετήσετε τον δείκτη του ποντικιού πάνω του και θα δείτε μια επιλογή αλλαγής μεγέθους.
Εάν δεν μπορείτε να δείτε καθόλου το άμεσο παράθυρο, εδώ είναι κάτι που έχει λειτουργήσει για πολλούς ανθρώπους (αυτό συμβαίνει συχνά λόγω αλλαγών στην ανάλυση οθόνης):
- Ανοίξτε το πρόγραμμα επεξεργασίας VB
- Πατήστε Ctrl-G για να εστιάσετε στο άμεσο παράθυρο (ή κάντε κλικ στην επιλογή Προβολή στο μενού και, στη συνέχεια, κάντε κλικ στο άμεσο παράθυρο)
- Κρατήστε πατημένο το πλήκτρο ALT και, στη συνέχεια, πατήστε το πλήκτρο διαστήματος. Αυτό θα εμφανίσει αναπτυσσόμενες επιλογές για το άμεσο παράθυρο.
- Πατήστε M (για μετακίνηση)
- Χρησιμοποιήστε τα βέλη για να μετακινήσετε το παράθυρο
- Μόλις καταλάβετε πού βρίσκεται, κάντε το μεγαλύτερο
Το πήρα από ένα φόρουμ εδώ και παρατήρησα επίσης ότι το ίδιο προτείνεται ως λύση για το άμεσο παράθυρο VBA που δεν εμφανίζεται.
Ένα άλλο πράγμα που μπορείτε να δοκιμάσετε είναι να κάνετε το άμεσο παράθυρο μη κλειστό (μεταβείτε στην επιλογή Εργαλεία -> Επιλογές -> Σύνδεση και καταργήστε την επιλογή της άμεσης παραθύρου). Αυτό λειτούργησε για μερικούς ανθρώπους.
Μπορεί επίσης να σας αρέσουν τα ακόλουθα άρθρα:
- Excel Personal Macro Workbook | Αποθήκευση & χρήση μακροεντολών σε όλα τα βιβλία εργασίας
- Excel VBA Loops: Για το Next, Do while, Do till, για το καθένα (με παραδείγματα)
- Εργασία με φύλλα εργασίας χρησιμοποιώντας Excel VBA
- Δημιουργία συνάρτησης καθορισμένης από το χρήστη (UDF) στο Excel VBA