Trova testo in una stringa (funzione INSTR) - Esempi di codice VBA

Funzione INSTR

La funzione VBA Instr controlla se una stringa di testo si trova in un'altra stringa di testo. Restituisce 0 se il testo non viene trovato. Altrimenti restituisce la posizione del carattere in cui si trova il testo.

La funzione Instr esegue esatto partite. L'operatore VBA Like può essere utilizzato invece per eseguire corrispondenze/pattern matching inesatti utilizzando i caratteri jolly.

Esempio di strumento

Il seguente frammento di codice cerca la stringa "Cerca in questa stringa" per la parola "Cerca". La funzione Instr restituisce 1 perché il testo si trova nella prima posizione.

123 Sub TrovaTesto()MsgBox InStr("Cerca in questa stringa", "Cerca")Fine sottotitolo

Questo secondo esempio restituisce 7 perché il testo si trova a partire dalla settima posizione:

123 Sub TrovaTesto2()MsgBox InStr("Non cercare in questa stringa", "Cerca")Fine sottotitolo

Importante! La funzione Instr è che tiene conto del maiuscolo o minuscolo per impostazione predefinita. Ciò significa che "look" non corrisponderà a "look". Per rendere il test insensibile alle maiuscole, leggi di seguito.

Sintassi Instr

La sintassi per la funzione Instr è la seguente:

1 Instr( [inizio], stringa, sottostringa, [confronto])

[inizio] (opzionale) - Questo argomento opzionale è la posizione di partenza della ricerca. Immettere 1 per avviare la ricerca dalla posizione 1 (o lasciare vuoto). Immettere 5 per avviare la ricerca dalla posizione 5. Importante! La funzione INSTR calcola la posizione del carattere contando da 1 NON dalla posizione [iniziale].

corda - La stringa di testo in cui cercare.

sottostringa - La stringa di testo da trovare nella stringa primaria.

[confronta] (opzionale) - Per impostazione predefinita, Instr fa distinzione tra maiuscole e minuscole. Impostando questo argomento puoi rendere Instr Case insensitive:

Argomento vb Valore

Argomento intero Descrizione
vbBinaryCompare

0

(Predefinito) Fa distinzione tra maiuscole e minuscole

vbTextCompare

1

Non sensibile a maiuscole e minuscole

vbDatabaseCompare

2

Solo accesso MS. Utilizza le informazioni nel database per eseguire il confronto.

Posizione iniziale strument

La posizione iniziale di Instr ti permette di indicare la posizione del carattere da cui inizierai la tua ricerca. Tieni presente, tuttavia, che l'output di Instr conterà sempre da 1.

Qui impostiamo la posizione di partenza su 3 per saltare la prima B:

123 Sub Instr_StartPosition()MsgBox InStr(3, "ABC ABC", "B")Fine sottotitolo

Il risultato è 6 perché la seconda B è il sesto carattere nella stringa.

Test INSTR senza distinzione tra maiuscole e minuscole

Per impostazione predefinita, VBA considera "L" diverso da "l". In altre parole, VBA fa distinzione tra maiuscole e minuscole. Questo è vero per tutte le funzioni di testo. Per rendere VBA insensibile alle maiuscole, imposta l'argomento [compare] su 1 o vbTextCompare.

123 Public Sub FindText_IgnoreCase()MsgBox InStr(1, "Non cercare in questa stringa", "guarda", vbTextCompare)Fine sottotitolo

In alternativa, puoi aggiungere l'opzione Confronta testo nella parte superiore del modulo di codice:

1 Opzione Confronta testo
12345 Opzione Confronta testoPublic Sub FindText_IgnoreCase2()MsgBox InStr("Non cercare in questa stringa", "guarda")Fine sottotitolo

L'opzione Confronta testo influirà su tutto il codice in quel modulo. Personalmente lo metto in cima a qualsiasi modulo che si occupa di testo perché non mi interessano mai le differenze di caso.

Funzione InstrRev

La funzione Instr effettua la ricerca da sinistra. Invece puoi cercare da destra usando la funzione InstrRev. La funzione InstrRev funziona in modo molto simile alla funzione Instr.

123 Sub FindSomeText_FromRight()MsgBox InStrRev("Cerca in questa stringa", "Cerca")Fine sottotitolo

Proprio come la funzione Instr, questa restituirà 1 perché c'è solo un'istanza di "Look" nel testo. Ma se aggiungiamo un secondo "Look", vedrai che restituisce la posizione del "Look" più a destra:

123 Sub FindSomeText_FromRight()MsgBox InStrRev("Cerca in questa stringa Guarda", "Cerca")Fine sottotitolo

Successivamente esamineremo altri esempi di Instr.

Esempi di stringhe

Se la stringa contiene una sottostringa

Qui useremo un'istruzione If per verificare se una stringa contiene una sottostringa di testo:

123456789 Public Sub FindSomeText()If InStr("Cerca in questa stringa", "guarda") = 0 ThenMsgBox "Nessuna corrispondenza"AltroMsgBox "Almeno una corrispondenza"Finisci seFine sottotitolo

Trova stringa di testo in una cella

Puoi anche trovare una stringa in una cella:

12345 Sub Trova_Stringa_Cella()Se InStr(Range("B2").Value, "Dr.") > 0 AlloraIntervallo ("C2"). Valore = "Dottore"Finisci seFine sottotitolo

Oppure scorre un intervallo di celle per verificare se le celle contengono del testo:

12345678910 Sub Search_Range_For_Text()Cella debole come intervalloPer ogni cella nell'intervallo ("b2: b6")Se InStr(cell.Value, "Dr.") > 0 Alloracell.Offset(0, 1).Value = "Dottore"Finisci seCella successivaFine sottotitolo

Trova la posizione di un carattere in una stringa

Questo codice troverà la posizione di un singolo carattere in una stringa e assegnerà la posizione a una variabile:

1234 Sotto Trova_Carattere()Dim n As Longn = InStr("Qui guarda qui", "L")Fine sottotitolo

Stringa di ricerca per parola

Questo codice cercherà una stringa per una parola:

12345678910 Sub Search_String_For_Word()Dim n As Longn = InStr("Qui guarda qui", "Guarda")Se n = 0 AlloraMsgBox "Parola non trovata"AltroMsgBox "Parola trovata in posizione: " & nFinisci seFine sottotitolo

Se la variabile contiene una stringa

Questo codice verificherà se una variabile stringa contiene una stringa di testo:

12345678 Sub Variable_Contains_String()Dim str As Stringstr = "Guarda qui"Se InStr(str, "Qui") > 0 AlloraMsgBox "Qui trovato!"Finisci seFine sottotitolo

Instr e la funzione sinistra

Instr può essere utilizzato insieme ad altre funzioni di testo come Left, Right, Len e Mid per tagliare il testo.

Con la funzione Left puoi emettere il testo prima di una stringa di testo:

1234567891011 Sub Instr_Left()Dim str As StringDim n As Longstr = "Guarda qui"n = InStr(str, "Qui")MsgBox Left(str, n - 1)Fine sottotitolo

Utilizzo di Instr in Microsoft Access VBA

Tutti gli esempi precedenti funzionano esattamente allo stesso modo in Access VBA come in Excel VBA.

Per saperne di più, leggi il nostro articolo: Funzioni di testo VBA

Aiuterete lo sviluppo del sito, condividere la pagina con i tuoi amici

wave wave wave wave wave