VBA InStr - Primi 5 esempi per utilizzare la funzione InStr di Excel VBA

Funzione Excel VBA InStr

Instr in VBA viene utilizzato per scoprire la posizione di una determinata sottostringa in una stringa dopo aver specificato il metodo di confronto alla funzione, ci sono quattro diversi metodi di confronto per questa funzione, Instr è una funzione stringa ma l'output restituito dalla funzione è numerico quindi l'output di questa funzione è in una variabile intera.

La stringa in VBA non è altro che una serie di caratteri, ovvero tutti i testi forniti con virgolette doppie vengono trattati come stringhe. InStr Function è una funzione di testo incorporata utilizzata per manipolare le stringhe. Ad esempio: se si desidera estrarre una sottostringa da una frase o se si desidera applicare modifiche al design del carattere a una particolare stringa in una serie di caratteri, o se si desidera trovare la posizione di un carattere e molte altre possibilità, è possibile utilizzare InStr.

Sintassi

Ha 4 argomenti, come mostrato nell'immagine qui sotto.

  • (Inizio): non è obbligatorio. Questo è il valore numerico di cui abbiamo bisogno per specificare da quale posizione della stringa la funzione Instr inizia a cercare il testo fornito. Per esempio: se si vuole cercare il carattere “a” nella parola “Bangalore” dalla 3 ° posizione, abbiamo bisogno di dire la funzione Instr posizione di partenza come 3. Quindi, dal 3 ° posizione, il carattere “a” è in quinta posizione. Se ignori questo parametro, il valore predefinito è 1.
  • Stringa 1: questa è la stringa effettiva che stiamo fornendo, ovvero, da questo testo, stiamo cercando di trovare la sottostringa. Ad esempio, se stai cercando la stringa "a" in "Bangalore", String 1 in Bangalore.
  • Stringa 2: non è altro che la stringa che stiamo cercando. Ad esempio, se stai cercando la stringa "a" in "Bangalore", la stringa 2 è a .
  • (Confronta): anche questo è un argomento opzionale. Ci sono tre tipi di opzioni disponibili nell'argomento (compare).
  • vbBinaryCompare: questa non è altro che una ricerca con distinzione tra maiuscole e minuscole della sottostringa (stringa 2) nella stringa 1. Ad esempio, se stiamo cercando "a" nella parola "Bangalore", Instr restituirà 2 come risultato e se tu stanno cercando "A" nella parola "Bangalore", Instr restituirà 0 come risultato perché la stringa fornita è un valore maiuscolo.

Possiamo anche mettere zero (0) come argomento.

vbTextCompare: Questa non è una ricerca con distinzione tra maiuscole e minuscole della stringa 2 nella stringa 1. Ad esempio, se stiamo cercando "a" nella parola "Bangalore", Instr restituirà 2 come risultato e se stai cercando " A ” nella parola “ Bangalore ”, anche Instr restituirà 2. La logica è A = a, B = b, C = c ecc….

Possiamo anche mettere uno (1) come argomento.

vbDatabaseCompare: viene utilizzato per confrontare le informazioni dal database, ad esempio il database di Microsoft Access.

Possiamo anche mettere uno (-1) come argomento.

Primi 5 esempi di utilizzo della funzione di istruzione VBA

Esempio 1

Cominciamo con il primo esempio. Nella parola Bangalore, trova la posizione del personaggio a.

Il codice seguente eseguirà l'attività per noi.

Codice:

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

Ora esegui il codice VBA sopra indicato usando il tasto F5, oppure puoi anche eseguire questo codice manualmente, come mostrato nello screenshot qui sotto.

Produzione:

Esempio n. 2

Ora nella parola Bangalore, trova la posizione del carattere "a" dalla terza posizione.

Il codice seguente eseguirà l'attività per noi.

Codice:

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

Per eseguire il codice sopra indicato, puoi usare il tasto F5, oppure puoi anche eseguire questo codice manualmente, come mostrato nello screenshot qui sotto.

Produzione:

Ora nell'immagine sopra, guarda la differenza dal codice precedente. Poiché abbiamo menzionato la posizione iniziale del carattere come 3, ha ignorato il primo carattere "a" nella seconda posizione.

Esempio n. 3

Ora vedremo la ricerca con distinzione tra maiuscole e minuscole. Nella parola Bangalore, trova la lettera "A"

Per questo, dobbiamo fornire l'argomento di confronto come vbBinaryCompare.

Codice:

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

Ora esegui questo codice usando il tasto F5, oppure puoi anche eseguire questo codice manualmente.

Produzione:

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 è una funzione VBA, quindi non puoi utilizzarla in un foglio di lavoro Excel come altre formule incorporate.
  • Se la funzione non riesce a trovare la stringa 2, il risultato sarà zero.

Articoli interessanti...