Πώς να χρησιμοποιήσετε τη συνάρτηση InputBox του VBA για να επιλέξετε μια περιοχή εν κινήσει στο Excel

Κόμβος πηγής: 987115

Η αυτοματοποίηση της διαδικασίας επιλογής δεν είναι δύσκολη εάν βασίζεστε στο InputBox της VBA στο Microsoft Excel.

Μαύρη γυναίκα που κοιτάζει υπολογιστικά φύλλα στις οθόνες

Εικόνα: Andrey_Popov/Shutterstock

Συχνά, θα θέλετε οι χρήστες του Excel να καθορίζουν ένα εύρος που χρησιμοποιεί στη συνέχεια η εφαρμογή με αυτοματοποιημένο τρόπο. Ευτυχώς, η λειτουργία InputBox της Visual Basic for Applications υποστηρίζει αυτήν την εργασία, επομένως δεν θα χρειαστεί να εργαστείτε πολύ σκληρά! Θα μάθετε πώς να επιλέγετε μια περιοχή χρησιμοποιώντας το InputBox σε αυτό το άρθρο.

ΒΛΕΠΩ: 83 συμβουλές για το Excel που κάθε χρήστης πρέπει να γνωρίζει (TechRepublic)

Περισσότερα για τα Windows

χρησιμοποιώ Microsoft 365 για μια Windows 10 Σύστημα 64-bit, αλλά μπορείτε να χρησιμοποιήσετε παλαιότερες εκδόσεις. Το Excel Online δεν θα υποστηρίζει τη διαδικασία VBA σε αυτό το άρθρο. Κατεβάστε τα αρχεία επίδειξης .xlsm, .xls και .cls για εύκολη πρόσβαση στον κωδικό.

Τι είναι το InputBox;

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

Αυτή η συνάρτηση έχει μόνο ένα απαιτούμενο όρισμα, έγκαιρη:

InputBox(έγκαιρη, [ τίτλος ], [ αθέτηση ], [ xpos ], [ λάθος ], [ βοηθητικό αρχείοσυμφραζόμενα ], [τύπος])

Η εντολή prompt είναι μια έκφραση συμβολοσειράς που εμφανίζεται στο παράθυρο διαλόγου. χρησιμοποιήστε αυτό για να πείτε στο χρήστη τι να κάνει. Συνήθως, αυτή η συμβολοσειρά θα ζητά από τον χρήστη να εισαγάγει κάποιο είδος περιεχομένου. Πίνακας Α προσφέρει μια σύντομη εξήγηση για κάθε όρισμα, αλλά θα χρησιμοποιήσουμε μόνο τα ακόλουθα τρία: προτροπή, τίτλος και τύπος. Πίνακας Β Εμφανίζει τις πιθανές τιμές τύπου. θα χρησιμοποιήσουμε το 8 επειδή αυτή η τιμή επιστρέφει ένα αντικείμενο Range.

Πίνακας Α

Διαφωνία

εξήγηση

Επιστράφηκε τύπος δεδομένων

Προτροπή

Κείμενο που εμφανίζεται στο παράθυρο διαλόγου. Ο μέγιστος αριθμός χαρακτήρων είναι 1,024, αλλά σας συνιστώ να είστε όσο το δυνατόν πιο συνοπτικοί.

Σπάγγος

Τίτλος

Αυτή η προαιρετική έκφραση συμβολοσειράς εμφανίζεται στη γραμμή τίτλου του διαλόγου. Εάν παραλείψετε αυτό το όρισμα, το VBA θα εμφανίσει το όνομα της εφαρμογής.

Παραλλαγή

Προεπιλογή

Αυτή η προαιρετική έκφραση συμβολοσειράς εμφανίζεται στο πλαίσιο κειμένου του διαλόγου ως προεπιλεγμένη τιμή που μπορεί να αποδεχτεί ο χρήστης αντί να εισάγει νέο περιεχόμενο. Εάν παραλείψετε, το πλαίσιο κειμένου είναι κενό.

Παραλλαγή

xpos

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

Παραλλαγή

Υποσ

Αυτή η προαιρετική αριθμητική έκφραση καθορίζει, σε αναδιατάξεις, την κατακόρυφη απόσταση του άνω άκρου του πλαισίου διαλόγου από το επάνω μέρος της οθόνης. Εάν παραλειφθεί, το πλαίσιο διαλόγου είναι κατακόρυφα κεντραρισμένο. Χρήση xpos και λάθος μαζί για να προσδιορίσετε πού εμφανίζεται το πλαίσιο διαλόγου στην οθόνη.

Παραλλαγή

Αρχείο βοήθειας

Αυτή η προαιρετική συμβολοσειρά προσδιορίζει το αρχείο Βοήθειας που θα χρησιμοποιηθεί για την παροχή βοήθειας με ευαισθησία στο περιβάλλον. Εάν χρησιμοποιείτε βοηθητικό αρχείο, πρέπει επίσης να χρησιμοποιήσετε συμφραζόμενα.

Παραλλαγή

Πλαίσιο

Αυτή η αριθμητική έκφραση είναι ο αριθμός περιβάλλοντος στο βοηθητικό αρχείο.

Παραλλαγή

Χαρακτηριστικά   

 

Αυτή η αριθμητική έκφραση καθορίζει τον τύπο δεδομένων επιστροφής. Βλέπω Πίνακας Β για μια πλήρη λίστα τιμών. 

Παραλλαγή

Πίνακας Β

αξία

εξήγηση

0

Ένας τύπος

1

Ενας αριθμός

2

Κείμενο (μια συμβολοσειρά)

4

Μια λογική τιμή (Σωστό ή Λάθος)

8

Μια αναφορά κελιού, ως αντικείμενο Εύρους

16

Μια τιμή σφάλματος, όπως #N/A

64

Μια σειρά από τιμές

Πώς να χρησιμοποιήσετε το InputBox στο VBA

Τώρα που ξέρετε για το InputBox, ας το χρησιμοποιήσουμε με μια απλή διαδικασία. Συγκεκριμένα, η διαδικασία στο Καταχώρηση Α θα σας ζητήσει να επιλέξετε μια περιοχή. Μετά από μερικές δοκιμές τιμών, η διαδικασία θα εμφανίσει το εύρος που επιλέξατε σε ένα πλαίσιο μηνύματος. Εάν δεν εισαγάγετε ένα έγκυρο εύρος, η λειτουργία θα εμφανίσει ένα ενσωματωμένο μήνυμα σφάλματος.

Καταχώρηση Α

Sub SelRange()

«Χρησιμοποιήστε το InputBox για να ζητήσετε από τον χρήστη την περιοχή.

«Δοκιμή για ακύρωση και επιλογή ενός κελιού.

Dim rng ως εύρος

On Error Συνέχιση Επόμενη

Ορισμός rng = Application.InputBox( _

      Τίτλος:=”Παρακαλώ επιλέξτε ένα εύρος”, _

      Ερώτηση:=”Επιλογή περιοχής”, _

      Τύπος:=8)

Στο σφάλμα GoTo 0

«Δοκιμή για ακύρωση.

Εάν το rng δεν είναι τίποτα, τότε βγείτε από το Sub

«Δοκιμή για επιλογή ενός κυττάρου. 

«Κατάργηση χαρακτήρα σχολίου εάν η επιλογή ενός κελιού είναι εντάξει.

Αν rng.Rows.Count = 1 Τότε

    MsgBox "Έχετε επιλέξει μόνο ένα κελί." _

    & "Παρακαλώ επιλέξτε πολλά συνεχόμενα κελιά.", vbOKOnly

    Έξοδος Sub

End If

«Κατάργηση σχολίου για να επιλέξετε εύρος εισόδου.

'rng.Επιλέξτε

MsgBox rng.Διεύθυνση

Sub End

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

Για να εισέλθετε στη διαδικασία, πατήστε Alt + F11 για να ανοίξετε το πρόγραμμα επεξεργασίας Visual Basic. Στην Εξερεύνηση έργου στα αριστερά, επιλέξτε ThisWorkbook για να μπορείτε να εκτελέσετε τη διαδικασία σε οποιοδήποτε φύλλο. Μπορείτε να εισάγετε τον κωδικό χειροκίνητα ή εισαγάγετε το αρχείο .cls με δυνατότητα λήψης. Επιπλέον, η μακροεντολή βρίσκεται στο αρχεία .xlsm και .xls με δυνατότητα λήψης. Εάν εισάγετε τον κωδικό με μη αυτόματο τρόπο, μην επικολλήσετε από αυτήν την ιστοσελίδα. Αντίθετα, αντιγράψτε τον κώδικα σε ένα πρόγραμμα επεξεργασίας κειμένου και, στη συνέχεια, επικολλήστε αυτόν τον κώδικα στη λειτουργική μονάδα ThisWorkbook. Με αυτόν τον τρόπο θα αφαιρεθούν τυχόν φανταστικοί χαρακτήρες ιστού που διαφορετικά θα μπορούσαν να προκαλέσουν σφάλματα.

ΒΛΕΠΩ: Windows 10: Λίστες φωνητικών εντολών για αναγνώριση και υπαγόρευση ομιλίας (δωρεάν PDF) (TechRepublic)

Τώρα ήρθε η ώρα να χρησιμοποιήσετε τη διαδικασία για να σας ζητηθεί να επιλέξετε μια περιοχή. Για τους σκοπούς μας, το εύρος που επιλέγετε δεν έχει σημασία. Για να εμφανίσετε το InputBox, κάντε τα εξής:

  1. Κάντε κλικ στην καρτέλα Προγραμματιστές.
  2. Κάντε κλικ στην επιλογή Μακροεντολές στην ομάδα Κώδικας.
  3. Στο παράθυρο διαλόγου που προκύπτει, επιλέξτε SelRange() όπως φαίνεται στο Σχήμα Α και κάντε κλικ στην επιλογή Εκτέλεση.
  4. Όταν σας ζητηθεί, επιλέξτε οποιοδήποτε εύρος (βλ Σχήμα Β), και μετά κάντε κλικ στο OK.

Σχήμα Α

Επιλέξτε τη διαδικασία. 

” data-credit>excelselrange-macro-a.jpg

Επιλέξτε τη διαδικασία. 

Σχήμα Β

Χρησιμοποιήστε το ποντίκι για να επιλέξετε μια περιοχή. 

” data-credit>excelselrange-macro-b.jpg

Χρησιμοποιήστε το ποντίκι για να επιλέξετε μια περιοχή. 

Όπως βλέπετε Σχήμα Γ, η διαδικασία εμφανίζει το επιλεγμένο εύρος ως κείμενο. Κάντε κλικ στο OK για να κλείσετε το πλαίσιο μηνύματος. Σημειώστε ότι η αναφορά είναι απόλυτη. Εάν θέλετε κάτι να είναι σχετικό, προσθέστε κώδικα που αφαιρεί τους κατάλληλους (ή όλους) χαρακτήρες $. Μπορείτε να εισάγετε το εύρος από το πληκτρολόγιο με ή χωρίς τους χαρακτήρες $. Ωστόσο, το InputBox θα μετατρέψει την αναφορά σε απόλυτη.

Σχήμα Γ

  Η διαδικασία εμφανίζει το επιλεγμένο εύρος ως κείμενο.

” data-credit>excelselrange-macro-c.jpg

  Η διαδικασία εμφανίζει το επιλεγμένο εύρος ως κείμενο.

Δείτε πώς λειτουργεί το InputBox σε ένα υπολογιστικό φύλλο

Αφού ορίσουμε τη μεταβλητή rng ως αντικείμενο Range, η πρόταση Set εκτελεί το InputBox. Επειδή το όρισμα τύπου είναι 8, το InputBox αναμένει μια επιλογή. Εάν εισαγάγετε οτιδήποτε άλλο, η διαδικασία θα εμφανίσει το μήνυμα σφάλματος που εμφανίζεται Σχήμα Δ. Αυτό σημαίνει ότι δεν χρειάζεστε ειδικό χειρισμό σφαλμάτων, η δήλωση φροντίζει για εσάς.

Σχήμα Δ

Το InputBox θα σας πει πότε έχετε εισαγάγει οτιδήποτε άλλο εκτός από μια επιλογή εύρους.

” data-credit>excelselrange-macro-d.jpg

  Το InputBox θα σας πει πότε έχετε εισαγάγει οτιδήποτε άλλο εκτός από μια επιλογή εύρους. 

Αυτό το μήνυμα είναι πιθανώς αρκετά συγκεκριμένο που δεν θα θέλετε να το σφετεριστείτε. Ωστόσο, μπορείτε να καταγράψετε το σφάλμα και να προσθέσετε χειρισμό σφαλμάτων ειδικά για αυτό το σφάλμα. 

Η μεταβλητή rng αποθηκεύει την επιλεγμένη περιοχή ως αντικείμενο Range. όταν το εφαρμόζετε στη δική σας εργασία, πρέπει να αντιμετωπίζετε τη μεταβλητή ως αντικείμενο Range. Ωστόσο, χάρη στις πολλές ιδιότητες και εκδηλώσεις του, είναι απίθανο να χρειαστεί να κοιτάξετε πέρα ​​από αυτά.

Αυτή η διαδικασία δεν προσφέρει χειρισμό σφαλμάτων εκτός από το ενσωματωμένο σφάλμα που βλέπετε εάν εισάγετε οτιδήποτε άλλο εκτός από ένα εύρος (Σχήμα Δ). Θα θέλετε να προσθέσετε χειρισμό με ευαισθησία στο περιβάλλον όταν χρησιμοποιείτε το InputBox στα δικά σας βιβλία εργασίας. 

Είναι απίθανο να θέλετε να κάνετε όλα αυτά τα βήματα κάθε φορά που θέλετε να εκτελείτε τη διαδικασία. Αντίθετα, προσθέστε τη μακροεντολή στη γραμμή εργαλείων γρήγορης πρόσβασης. Για να το κάνετε αυτό, διαβάστε Πώς να προσθέσετε μακροεντολές του Office στη γραμμή εργαλείων QAT για γρήγορη πρόσβαση.

Δείτε επίσης

Πηγή: https://www.techrepublic.com/article/how-to-use-vbas-inputbox-function-to-select-a-range-on-the-fly-in-excel/#ftag=RSS56d97e7

Σφραγίδα ώρας:

Περισσότερα από Λογισμικό στο TechRepublic