VBA InStr | Κορυφαία 5 παραδείγματα για τη χρήση της συνάρτησης Excel VBA InStr

Λειτουργία InStr Excel VBA

Το Instr in VBA χρησιμοποιείται για να ανακαλύψει τη θέση ενός δεδομένου substring σε μια συμβολοσειρά αφού καθορίσουμε τη μέθοδο σύγκρισης με τη συνάρτηση, υπάρχουν τέσσερις διαφορετικές μέθοδοι σύγκρισης για αυτήν τη συνάρτηση, η Instr είναι μια συνάρτηση string αλλά η έξοδος που επιστρέφεται από τη συνάρτηση είναι αριθμητική, ώστε η έξοδος αυτή η συνάρτηση είναι σε ακέραια μεταβλητή.

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

Σύνταξη

Έχει 4 ορίσματα όπως φαίνεται στην παρακάτω εικόνα.

  • [Έναρξη]: Αυτό δεν είναι υποχρεωτικό. Αυτή είναι η αριθμητική τιμή που πρέπει να καθορίσουμε από ποια θέση της λειτουργίας συμβολοσειράς Instr αρχίζει να αναζητά το παρεχόμενο κείμενο. Για παράδειγμα: εάν θέλετε να αναζητήσετε τον χαρακτήρα "a" στη λέξη "Bangalore" από την 3η θέση, πρέπει να πούμε στη λειτουργία έναρξης τη θέση Instr ως 3. Έτσι από την 3η θέση ο χαρακτήρας "a" βρίσκεται στην 5η θέση. Εάν αγνοήσετε αυτήν την παράμετρο, η προεπιλεγμένη τιμή είναι 1.
  • String 1: Αυτή είναι η πραγματική συμβολοσειρά που παρέχουμε δηλαδή από αυτό το κείμενο προσπαθούμε να βρούμε το substring. Για παράδειγμα, αν ψάχνετε για τη συμβολοσειρά "a" στο "Bangalore", String 1 στο Bangalore.
  • Συμβολοσειρά 2: Αυτό δεν είναι τίποτα άλλο από το τι είναι η συμβολοσειρά που αναζητούμε. Για παράδειγμα, εάν ψάχνετε τη συμβολοσειρά "a" στο "Bangalore", το String 2 είναι ένα .
  • [Σύγκριση]: Αυτό είναι και πάλι ένα προαιρετικό επιχείρημα. Υπάρχουν τρία είδη διαθέσιμων επιλογών στο όρισμα [σύγκριση].

  • vbBinaryCompare: Αυτό δεν είναι τίποτα άλλο παρά μια πεζά-κεφαλαία αναζήτηση του υποστρώματος (συμβολοσειρά 2) στη συμβολοσειρά 1. Για παράδειγμα, αν ψάχνουμε για «a» στη λέξη «Bangalore», το Instr θα επιστρέψει 2 ως αποτέλεσμα και εάν ψάχνετε για "A" στη λέξη "Bangalore" Instr θα επιστρέψει 0 ως αποτέλεσμα, επειδή η παρεχόμενη συμβολοσειρά είναι κεφαλαία.

Μπορούμε επίσης να θέσουμε το μηδέν (0) ως όρισμα.

vbTextCompare: Αυτή δεν είναι μια πεζά-κεφαλαία αναζήτηση της συμβολοσειράς 2 στη συμβολοσειρά 1. Για παράδειγμα, εάν ψάχνουμε για «a» στη λέξη «Bangalore», το Instr θα επιστρέψει 2 ως αποτέλεσμα και αν ψάχνετε για «A» στη λέξη "Bangalore", ο Instr θα επέστρεφε επίσης 2. Η λογική είναι A = a, B = b, C = c κλπ….

Μπορούμε επίσης να θέσουμε ένα (1) ως επιχείρημα.

vbDatabaseCompare: Χρησιμοποιείται για τη σύγκριση των πληροφοριών από τη βάση δεδομένων σας, π.χ. βάση δεδομένων Microsoft Access.

Μπορούμε επίσης να θέσουμε ένα (-1) ως επιχείρημα.

Κορυφαία 5 παραδείγματα χρήσης της λειτουργίας VBA Instr

Μπορείτε να πραγματοποιήσετε λήψη αυτού του προτύπου VBA Instruction Excel Function - Πρότυπο VBA Instr Function Excel

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

Ας ξεκινήσουμε με το πρώτο παράδειγμα. Στη λέξη Bangalore βρείτε τη θέση του χαρακτήρα a.

Ο παρακάτω κώδικας θα εκτελέσει την εργασία για εμάς.

Κώδικας:

 Sub Instr_Example1 () Dim i As Variant i = InStr ("Bangalore", "a") MsgBox i End Sub 

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

Παραγωγή:

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

Τώρα στη λέξη Bangalore βρείτε τη θέση του χαρακτήρα «a» από την τρίτη θέση.

Ο παρακάτω κώδικας θα εκτελέσει την εργασία για εμάς.

Κώδικας:

 Sub Instr_Example2 () Dim i As Variant i = InStr (3, "Bangalore", "a") MsgBox i End Sub 

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

Παραγωγή:

Τώρα στην παραπάνω εικόνα, δείτε τη διαφορά από τον προηγούμενο κώδικα. Εφόσον έχουμε αναφέρει την αρχική θέση του χαρακτήρα ως 3 αγνόησε τον πρώτο χαρακτήρα «α» στη 2η θέση.

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

Τώρα θα δούμε αναζήτηση με κεφαλαία γράμματα. Στη λέξη Μπανγκαλόρ βρείτε το γράμμα «Α».

Για αυτό, πρέπει να παρέχουμε το όρισμα σύγκρισης ως vbBinaryCompare.

Κώδικας:

 Sub Instr_Example3 () Dim i As Variant i = InStr (1, "Bangalore", "A", vbBinaryCompare) MsgBox i End Sub 

Τώρα εκτελέστε, αυτόν τον κωδικό χρησιμοποιώντας το πλήκτρο F5 ή μπορείτε επίσης να εκτελέσετε αυτόν τον κωδικό χειροκίνητα.

Παραγωγή:

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

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

Τώρα θα δούμε μια ακόμη αναζήτηση με κεφαλαία. Στη λέξη Μπανγκαλόρ βρείτε το γράμμα «Α». Το προηγούμενο παράδειγμα επέστρεψε το αποτέλεσμα ως μηδέν.

Προκειμένου να ξεπεραστεί η ευαίσθητη σε αυτήν την προσέγγιση, πρέπει να παρέχουμε το όρισμα σύγκρισης ως vbTextCompare.

Κώδικας:

 Sub Instr_Example4 () Dim i As Variant i = InStr (1, "Bangalore", "A", vbTextCompare) MsgBox i End Sub 

Τώρα εκτελέστε, αυτός ο κωδικός χρησιμοποιώντας το πλήκτρο F5 ή μπορείτε επίσης να εκτελέσετε αυτόν τον κωδικό χειροκίνητα.

Παραγωγή:

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

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

Για παράδειγμα, έχω 5 φύλλα με το όνομα Περίληψη 1, Περίληψη 2, Περίληψη 3, Περίληψη 4 και Φύλλο δεδομένων.

Τώρα θέλω να κρύψω όλα αυτά τα φύλλα που έχουν τη λέξη «Περίληψη». Χρησιμοποιήστε τον παρακάτω κωδικό για να αποκρύψετε όλα τα φύλλα που έχουν τη λέξη Σύνοψη στο όνομά της.

Κώδικας:

 Sub To_Hide_Specific_Sheet () Dim Ws ως φύλλο εργασίας για κάθε Ws στο ActiveWorkbook. Φύλλα εργασίας Εάν InStr (Ws.Name, "Σύνοψη")> 0 Τότε Ws.Visible = xlSheetVeryHidden End if Η συνάρτηση InStr του επόμενου Ws αναζητά λέξη ή φράση στο όνομα του φύλλου "Αν το βρει τότε θα είναι κρυφό End Sub 

Τώρα εκτελέστε, αυτός ο κωδικός χρησιμοποιώντας το πλήκτρο F5 ή μπορείτε επίσης να εκτελέσετε αυτόν τον κωδικό χειροκίνητα και να δείτε την έξοδο.

Ομοίως, για να καταργήσετε την εμφάνιση όλων αυτών των φύλλων χρησιμοποιήστε τον παρακάτω κώδικα.

Κώδικας:

 Sub To_UnHide_Specific_Sheet () Dim Ws ως φύλλο εργασίας για κάθε Ws στο ActiveWorkbook.Wheheets If InStr (Ws.Name, "Summary")> 0 Τότε Ws.Visible = xlSheetVisible End if Η συνάρτηση InStr του επόμενου Ws αναζητά λέξη ή φράση στο όνομα του φύλλου "Αν το βρει τότε θα είναι κρυφό End Sub 

Τώρα εκτελέστε, αυτός ο κωδικός χρησιμοποιώντας το πλήκτρο F5 ή μπορείτε επίσης να εκτελέσετε αυτόν τον κωδικό χειροκίνητα και να δείτε την έξοδο.

Πράγματα που πρέπει να θυμάστε

  • Το Instr είναι μια λειτουργία ευαίσθητη σε πεζά. Για να εξαλείψετε αυτό το ζήτημα ευαίσθητο σε πεζά, πρέπει να παρέχετε το όρισμα [σύγκριση] ως.
  • Εάν ψάχνετε για κεφαλαίο χαρακτήρα πρέπει να παρέχετε το όρισμα [σύγκριση], ως προεπιλογή, το VBA το παίρνει ως όρισμα ακόμα και αν δεν το παρέχετε.
  • Το Instr είναι μια συνάρτηση VBA, ώστε να μην μπορείτε να το χρησιμοποιήσετε σε ένα φύλλο εργασίας excel, όπως άλλοι ενσωματωμένοι τύποι.
  • Εάν η συνάρτηση δεν μπορεί να βρει τη συμβολοσειρά 2, το αποτέλεσμα θα είναι μηδέν.