Λειτουργία INSTR
Η συνάρτηση VBA Instr ελέγχει εάν υπάρχει μια συμβολοσειρά κειμένου σε άλλη συμβολοσειρά κειμένου. Επιστρέφει 0 αν το κείμενο δεν βρεθεί. Διαφορετικά επιστρέφει τη θέση χαρακτήρα όπου βρίσκεται το κείμενο.
Η λειτουργία Instr εκτελείται ακριβής αγώνες. Ο χειριστής VBA Like μπορεί να χρησιμοποιηθεί αντ 'αυτού για την εκτέλεση ακριβών αντιστοιχιών / αντιστοίχισης μοτίβου χρησιμοποιώντας Wildcards.
Παράδειγμα Instr
Το ακόλουθο απόσπασμα κώδικα αναζητά τη συμβολοσειρά "Look in this string" για τη λέξη "Look". Η συνάρτηση Instr επιστρέφει 1 επειδή το κείμενο βρίσκεται στην πρώτη θέση.
123 | Sub FindSomeText ()MsgBox InStr ("Κοιτάξτε σε αυτήν τη συμβολοσειρά", "Κοιτάξτε")Τέλος υπο |
Αυτό το δεύτερο παράδειγμα επιστρέφει 7 επειδή το κείμενο βρίσκεται ξεκινώντας από την 7η θέση:
123 | Sub FindSomeText2 ()MsgBox InStr ("Μην κοιτάτε σε αυτήν τη συμβολοσειρά", "Κοιτάξτε")Τέλος υπο |
Σπουδαίος! Η συνάρτηση Instr είναι διάκριση πεζών-κεφαλαίων από προεπιλογή. Αυτό σημαίνει ότι το "look" δεν ταιριάζει με το "Look". Για να κάνετε τη δοκιμή χωρίς διάκριση πεζών-κεφαλαίων, διαβάστε παρακάτω.
Σύνταξη Instr
Η σύνταξη για τη συνάρτηση Instr έχει ως εξής:
1 | Instr ([έναρξη], συμβολοσειρά, υποσύστημα, [σύγκριση]) |
[έναρξη] (προαιρετικό) - Αυτό το προαιρετικό όρισμα είναι η αρχική θέση της αναζήτησης. Εισαγάγετε 1 για να ξεκινήσετε την αναζήτηση από τη θέση 1 (ή αφήστε κενό). Εισαγάγετε 5 για να ξεκινήσετε την αναζήτηση από τη θέση 5. Σπουδαίος! Η συνάρτηση INSTR υπολογίζει τη θέση του χαρακτήρα μετρώντας από το 1 ΟΧΙ από τη θέση [εκκίνησης].
σειρά - Η συμβολοσειρά κειμένου για αναζήτηση.
υποσύρμα - Η συμβολοσειρά κειμένου που βρίσκεται στην κύρια συμβολοσειρά.
[σύγκριση] (προαιρετικό) - Από προεπιλογή, το Instr κάνει διάκριση πεζών-κεφαλαίων. Ορίζοντας αυτό το όρισμα, μπορείτε να κάνετε το Instr Case να μην είναι ευαίσθητο:
Επιχείρημα vb Αξία | Ακέραιο επιχείρημα | Περιγραφή |
vbBinaryCompare |
0 | (Προεπιλογή) Με διάκριση πεζών-κεφαλαίων |
vbTextCompare |
1 | Δεν έχει διάκριση πεζών-κεφαλαίων |
vbDatabaseCompare |
2 | Μόνο MS Access. Χρησιμοποιεί πληροφορίες στη βάση δεδομένων για τη σύγκριση. |
Θέση έναρξης Instr
Η θέση έναρξης Instr σάς επιτρέπει να υποδείξετε τη θέση χαρακτήρων από την οποία θα ξεκινήσετε την αναζήτησή σας. Λάβετε υπόψη, ωστόσο, ότι η έξοδος Instr θα μετράει πάντα από το 1.
Εδώ θέσαμε τη θέση εκκίνησης σε 3 για να παραλείψουμε το πρώτο Β:
123 | Sub Instr_StartPosition ()MsgBox InStr (3, "ABC ABC", "B")Τέλος υπο |
Το αποτέλεσμα είναι 6 επειδή το δεύτερο Β είναι ο 6ος χαρακτήρας στη συμβολοσειρά.
Διάκριση περίπτωσης INSTR Δοκιμή
Από προεπιλογή, το VBA αντιμετωπίζει το "L" διαφορετικό από το "l". Με άλλα λόγια, το VBA έχει διάκριση πεζών-κεφαλαίων. Αυτό ισχύει για όλες τις λειτουργίες κειμένου. Για να κάνετε τη διάκριση κεφαλαίων σε VBA, ορίστε το όρισμα [σύγκριση] σε 1 ή vbTextCompare.
123 | Public Sub FindText_IgnoreCase ()MsgBox InStr (1, "Don't Look in this string", "look", vbTextCompare)Τέλος υπο |
Εναλλακτικά, μπορείτε να προσθέσετε την επιλογή Σύγκριση κειμένου στο επάνω μέρος της μονάδας κώδικα:
1 | Επιλογή Σύγκριση κειμένου |
12345 | Επιλογή Σύγκριση κειμένουPublic Sub FindText_IgnoreCase2 ()MsgBox InStr ("Μην κοιτάτε σε αυτήν τη συμβολοσειρά", "κοιτάξτε")Τέλος υπο |
Επιλογή Σύγκριση Κείμενο θα επηρεάσει όλο τον κώδικα σε αυτήν την ενότητα. Προσωπικά το τοποθετώ στην κορυφή κάθε ενότητας που ασχολείται με το κείμενο επειδή ποτέ δεν με ενδιαφέρουν οι διαφορές των περιπτώσεων.
Λειτουργία InstrRev
Η λειτουργία Instr πραγματοποιεί αναζήτηση από αριστερά. Αντ 'αυτού, μπορείτε να κάνετε αναζήτηση από τα δεξιά χρησιμοποιώντας τη συνάρτηση InstrRev. Η λειτουργία InstrRev λειτουργεί πολύ παρόμοια με τη λειτουργία Instr.
123 | Sub FindSomeText_FromRight ()MsgBox InStrRev ("Κοιτάξτε σε αυτήν τη συμβολοσειρά", "Κοιτάξτε")Τέλος υπο |
Ακριβώς όπως η συνάρτηση Instr, αυτό θα επιστρέψει 1 επειδή υπάρχει μόνο μία περίπτωση "Look" στο κείμενο. Αλλά αν προσθέσουμε ένα δεύτερο "Look", θα δείτε ότι επιστρέφει τη θέση του πιο σωστού "Look":
123 | Sub FindSomeText_FromRight ()MsgBox InStrRev ("Look in this string Look", "Look")Τέλος υπο |
Στη συνέχεια θα εξετάσουμε περισσότερα παραδείγματα Instr.
Παραδείγματα InString
Εάν η συμβολοσειρά περιέχει υποχορδές
Εδώ θα χρησιμοποιήσουμε μια δήλωση If για να ελέγξουμε εάν μια συμβολοσειρά περιέχει μια υποσύμβολο κειμένου:
123456789 | Public Sub FindSomeText ()Εάν InStr ("Κοιτάξτε σε αυτήν τη συμβολοσειρά", "κοιτάξτε") = 0 ΤότεMsgBox "Δεν ταιριάζει"ΑλλούMsgBox "Τουλάχιστον ένας αγώνας"Τέλος εανΤέλος υπο |
Εύρεση συμβολοσειράς κειμένου σε κελί
Μπορείτε επίσης να βρείτε μια συμβολοσειρά σε ένα κελί:
12345 | Sub Find_String_Cell ()Εάν InStr (Εύρος ("B2"). Τιμή, "Δρ")> 0 ΤότεΕύρος ("C2"). Τιμή = "Γιατρός"Τέλος εανΤέλος υπο |
Or πραγματοποιήστε αναζήτηση σε μια σειρά κελιών για να ελέγξετε εάν τα κελιά περιέχουν κάποιο κείμενο:
12345678910 | Sub Search_Range_For_Text ()Dim cell As RangeΓια κάθε κελί εντός εμβέλειας ("b2: b6")Εάν InStr (cell.Value, "Dr.")> 0 Τότεcell.Offset (0, 1) .Value = "Doctor"Τέλος εανΕπόμενο κελίΤέλος υπο |
Βρείτε τη θέση ενός χαρακτήρα σε μια συμβολοσειρά
Αυτός ο κώδικας θα βρει τη θέση ενός χαρακτήρα σε μια συμβολοσειρά και θα εκχωρήσει τη θέση σε μια μεταβλητή:
1234 | Sub Find_Char ()Dim n As Longn = InStr ("Here Look Here", "L")Τέλος υπο |
Αναζήτηση συμβολοσειράς για το Word
Αυτός ο κώδικας θα αναζητήσει μια συμβολοσειρά για μια λέξη:
12345678910 | Υπο -Αναζήτηση συμβολοσειράς_Για_Λέξη ()Dim n As Longn = InStr ("Here Look Here", "Look")Αν n = 0 ΤότεMsgBox "Η λέξη δεν βρέθηκε"ΑλλούMsgBox "Λέξη που βρέθηκε στη θέση:" & nΤέλος εανΤέλος υπο |
Εάν η μεταβλητή περιέχει συμβολοσειρά
Αυτός ο κώδικας θα ελέγξει εάν μια μεταβλητή συμβολοσειράς περιέχει μια συμβολοσειρά κειμένου:
12345678 | Sub Variable_Contains_String ()Dim str As Stringstr = "Κοίτα εδώ"Εάν InStr (str, "Here")> 0 ΤότεMsgBox "Εδώ βρέθηκε!"Τέλος εανΤέλος υπο |
Instr και η αριστερή συνάρτηση
Το Instr μπορεί να χρησιμοποιηθεί μαζί με άλλες λειτουργίες κειμένου, όπως Αριστερά, Δεξιά, Len και Mid για περικοπή κειμένου.
Με τη λειτουργία Αριστερά μπορείτε να εξάγετε το κείμενο πριν από μια συμβολοσειρά κειμένου:
1234567891011 | Sub Instr_Left ()Dim str As StringDim n As Longstr = "Κοίτα εδώ"n = InStr (str, "Here")MsgBox Αριστερά (str, n - 1)Τέλος υπο |
Χρήση του Instr στο Microsoft Access VBA
Όλα τα παραπάνω παραδείγματα λειτουργούν ακριβώς το ίδιο στην Access VBA όπως στο Excel VBA.
Για να μάθετε περισσότερα, διαβάστε το άρθρο μας: Λειτουργίες κειμένου VBA