VBA InStr

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. La funzione InStr è 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. Ad esempio: se si desidera cercare il carattere "a" nella parola "Bangalore" dalla 3a posizione, è necessario indicare la posizione iniziale della funzione Instr come 3. Quindi dalla 3a posizione il carattere "a" è in 5a 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 stai cercando per "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 Instr VBA

È possibile scaricare questo modello Excel della funzione Instr VBA qui - Modello Excel della funzione Instr 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 utilizzare il tasto F5 o 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:

Poiché abbiamo fornito l'argomento di confronto come vbBinaryCompare, la funzione Instr ha restituito il risultato come zero perché non esistono lettere maiuscole "A" .

Esempio n. 4

Ora vedremo un'altra ricerca con distinzione tra maiuscole e minuscole. Nella parola Bangalore trova la lettera "A". L'esempio precedente ha restituito il risultato come zero.

Per superare l'approccio case sensitive qui, dobbiamo fornire l'argomento compare come vbTextCompare.

Codice:

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

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

Produzione:

Esempio n. 5

Ora vedremo il livello avanzato della funzione Instr. Se hai molti fogli che hanno un nome più o meno simile e vuoi nascondere tutti quei fogli contemporaneamente possiamo usare il codice sottostante per nascondere un foglio specifico.

Ad esempio, ho 5 fogli denominati Riepilogo 1, Riepilogo 2, Riepilogo 3, Riepilogo 4 e Foglio dati.

Ora voglio nascondere tutti quei fogli che hanno la parola "Riepilogo". Usa il codice seguente per nascondere tutti i fogli che hanno la parola Riepilogo nel nome.

Codice:

 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 cerca parole o frasi nel nome del foglio 'Se trova, sarà nascosto End Sub 

Ora esegui questo codice utilizzando il tasto F5 oppure puoi anche eseguire questo codice manualmente e vedere l'output.

Allo stesso modo per mostrare tutti quei fogli usa il codice sottostante.

Codice:

 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 cerca parole o frasi nel nome del foglio 'Se trova, sarà nascosto End Sub 

Ora esegui questo codice utilizzando il tasto F5 oppure puoi anche eseguire questo codice manualmente e vedere l'output.

Cose da ricordare

  • Instr è una funzione case sensitive. Per eliminare questo problema che distingue tra maiuscole e minuscole, è necessario fornire l'argomento [compare] come.
  • 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 is a VBA function so that you cannot use it in an excel worksheet like other built-in formulas.
  • If the function cannot find the String 2 the result will be zero.