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

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

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

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

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

Σύνταξη

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

  • (Έναρξη): Αυτό δεν είναι υποχρεωτικό. Αυτή είναι η αριθμητική τιμή που πρέπει να καθορίσουμε από ποια θέση της λειτουργίας συμβολοσειράς Instr αρχίζει να αναζητά το παρεχόμενο κείμενο. Για παράδειγμα: εάν θέλετε να αναζητήσετε τον χαρακτήρα "a" στη λέξη "Bangalore" από την θέση, πρέπει να πούμε στη λειτουργία έναρξης τη θέση Instr ως 3. Έτσι, από την θέση, ο χαρακτήρας "a" είναι στην θέση. Εάν αγνοήσετε αυτήν την παράμετρο, η προεπιλεγμένη τιμή είναι 1.
  • String 1: Αυτή είναι η πραγματική συμβολοσειρά που παρέχουμε δηλαδή, από αυτό το κείμενο, προσπαθούμε να βρούμε το substring. Για παράδειγμα, αν ψάχνετε για τη συμβολοσειρά "a" στο "Bangalore", String 1 στο Bangalore.
  • Συμβολοσειρά 2: Αυτό δεν είναι παρά η συμβολοσειρά που αναζητούμε. Για παράδειγμα, εάν ψάχνετε τη συμβολοσειρά "a" στο "Bangalore", το String 2 είναι ένα .
  • (Σύγκριση): Αυτό είναι και πάλι ένα προαιρετικό επιχείρημα. Υπάρχουν τρία είδη διαθέσιμων επιλογών στο όρισμα (σύγκριση).
  • vbBinaryCompare: Αυτό δεν είναι τίποτα άλλο παρά μια πεζά-κεφαλαία αναζήτηση του υποστρώματος (συμβολοσειρά 2) στη συμβολοσειρά 1. Για παράδειγμα, εάν ψάχνουμε για «a» στη λέξη «Bangalore», το Instr θα επιστρέψει 2 ως αποτέλεσμα, και εάν ψάχνουν για "Α" στη λέξη "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

Παράδειγμα # 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, αγνόησε τον πρώτο χαρακτήρα «a» στη θέση.

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

Τώρα θα δούμε την αναζήτηση με κεφαλαία. Στη λέξη Bangalore, βρείτε το γράμμα "A."

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

Κώδικας:

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

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

Παραγωγή:

Since we have supplied the compare argument as vbBinaryCompare Instr function returned the result as zero because there are no uppercase letter “A” exists.

Example #4

Now we will see one more case sensitive search. In the word Bangalore, find the letter “A.” The previous example returned the result as zero.

In order to overcome the case sensitive approach here, we need to supply the compare argument as vbTextCompare.

Code:

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

Now Run, this code using the F5 Key, or you can also run this code manually.

Output:

Example #5

Now we will see the advanced level of Instr function. If you have many sheets that have a more or less similar name and you want to hide all those sheets at once, we can use the below code to hide a specific sheet.

For example, I have 5 sheets named Summary 1, Summary 2, Summary 3, Summary 4, and Data Sheet.

Now I want to hide all those sheets which have the word “Summary.” Use the below code to hide all the sheets which have the word Summary in its name.

Code:

Sub To_Hide_Specific_Sheet() Dim Ws As Worksheet For Each Ws In ActiveWorkbook.Worksheets If InStr(Ws.Name, "Summary")> 0 Then Ws.Visible = xlSheetVeryHidden End If Next Ws 'InStr function looks for word or phrase in the sheet name 'If it finds then it will be hidden End Sub

Now Run, this code using the F5 Key, or you can also run this code manually and see the Output.

Similarly, in order to unhide all those sheets, use the below code.

Code:

Sub To_UnHide_Specific_Sheet() Dim Ws As Worksheet For Each Ws In ActiveWorkbook.Worksheets If InStr(Ws.Name, "Summary")> 0 Then Ws.Visible = xlSheetVisible End If Next Ws 'InStr function looks for word or phrase in the sheet name 'If it finds then it will be hidden End Sub

Now Run, this code using the F5 Key, or you can also run this code manually and see the Output.

Things to Remember

  • Instr is a case sensitive function. In order to eliminate this case sensitive issue, you need to supply the (compare) argument as.
  • If you are searching for case sensitive character, you need to supply the (compare) argument as, by default, VBA takes this as the argument even if you do not supply.
  • Το Instr είναι μια συνάρτηση VBA, έτσι ώστε να μην μπορείτε να το χρησιμοποιήσετε σε ένα φύλλο εργασίας excel, όπως άλλοι ενσωματωμένοι τύποι.
  • Εάν η συνάρτηση δεν μπορεί να βρει τη συμβολοσειρά 2, το αποτέλεσμα θα είναι μηδέν.

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