Găsiți text într-un șir (funcție INSTR) - Exemple de cod VBA

Funcția INSTR

Funcția VBA Instr verifică dacă un șir de text se găsește într-un alt șir de text. Returnează 0 dacă textul nu este găsit. În caz contrar, returnează poziția caracterului în care este găsit textul.

Funcția Instr funcționează corect chibrituri. VBA Like Operator poate fi folosit în schimb pentru a efectua potriviri inexacte / potrivire de tipare folosind metacaractere.

Exemplu de instrumente

Următorul fragment de cod caută în șirul „Căutați în acest șir” cuvântul „Căutați”. Funcția Instr returnează 1 deoarece textul se găsește în prima poziție.

123 Sub FindSomeText ()MsgBox InStr („Uită-te în acest șir”, „Uită-te”)Sfârșitul Sub

Acest al doilea exemplu returnează 7 deoarece textul este găsit începând din poziția a 7-a:

123 Sub FindSomeText2 ()MsgBox InStr („Nu te uita în acest șir”, „Uită-te”)Sfârșitul Sub

Important! Funcția Instr este caz sensibil în mod implicit. Aceasta înseamnă că „look” nu se va potrivi cu „Look”. Pentru a face testul să nu fie sensibil la majuscule, citiți mai jos.

Sintaxa instrumentelor

Sintaxa pentru funcția Instr este următoarea:

1 Instr ([start], șir, sub șir, [compara])

[start] (opțional) - Acest argument opțional este poziția inițială a căutării. Introduceți 1 pentru a începe căutarea din poziția 1 (sau lăsați necompletat). Introduceți 5 pentru a începe căutarea din poziția 5. Important! Funcția INSTR calculează poziția caracterului numărând de la 1 NU din poziția [start].

şir - Șirul de text în care trebuie căutat.

subcord - Șirul de text de găsit în șirul principal.

[compara] (opțional) - În mod implicit, Instr este sensibil la majuscule și minuscule. Prin setarea acestui argument, puteți face Instrumentul nesensibil la majuscule și minuscule:

Argument vb Valoare

Argument Întreg Descriere
vbBinaryCompare

0

(Implicit) Sensibil la majuscule

vbTextCompare

1

Nu este sensibil la majuscule

vbDatabaseCompare

2

Numai acces MS. Folosește informații din baza de date pentru a efectua comparații.

Poziția de pornire a instrumentelor

Poziția de pornire Instr vă permite să indicați poziția personajului în care veți începe căutarea. Rețineți totuși, ieșirea Instr va conta întotdeauna de la 1.

Aici stabilim poziția de pornire la 3 pentru a sări peste primul B:

123 Sub Instr_StartPosition ()MsgBox InStr (3, „ABC ABC”, „B”)Sfârșitul Sub

Rezultatul este 6 deoarece al doilea B este al 6-lea caracter din șir.

Test INSTR care nu distinge majuscule

În mod implicit, VBA tratează „L” diferit de „l”. Cu alte cuvinte, VBA este sensibil la majuscule și minuscule. Acest lucru este valabil pentru toate funcțiile de text. Pentru a face VBA nesensibil la majuscule, setați argumentul [compare] la 1 sau vbTextCompare.

123 Sub public FindText_IgnoreCase ()MsgBox InStr (1, „Nu te uita în acest șir”, „arată”, vbTextCompare)Sfârșitul Sub

Alternativ, puteți adăuga opțiunea Comparare text în partea de sus a modulului de cod:

1 Opțiune Comparați textul
12345 Opțiune Comparați textulSub public FindText_IgnoreCase2 ()MsgBox InStr („Nu te uita în acest șir”, „uite”)Sfârșitul Sub

Opțiunea Compară textul va avea impact asupra întregului cod din acel modul. Personal, plasez acest lucru în partea de sus a oricărui modul care se ocupă de text, deoarece nu-mi pasă niciodată de diferențele de caz.

Funcția InstrRev

Funcția Instr caută din stânga. În schimb, puteți căuta din dreapta folosind funcția InstrRev. Funcția InstrRev funcționează foarte similar cu funcția Instr.

123 Sub FindSomeText_FromRight ()MsgBox InStrRev („Uită-te în acest șir”, „Uită-te”)Sfârșitul Sub

La fel ca funcția Instr, aceasta va reveni 1 pentru că există doar o singură instanță de „Look” în text. Dar dacă adăugăm un al doilea „Look”, veți vedea că acesta returnează poziția celui mai dreapta „Look”:

123 Sub FindSomeText_FromRight ()MsgBox InStrRev („Uită-te în acest șir Uită”, „Uită-te”)Sfârșitul Sub

În continuare vom examina mai multe exemple de instrumente.

Exemple InString

Dacă Șirul Conține Subșir

Aici vom folosi o instrucțiune If pentru a testa dacă un șir conține un șir de text:

123456789 Sub public FindSomeText ()Dacă InStr („Uită-te în acest șir”, „uită”) = 0 AtunciMsgBox „Fără potrivire”AltfelMsgBox „Cel puțin un meci”End IfSfârșitul Sub

Găsiți șir de text într-o celulă

De asemenea, puteți găsi un șir într-o celulă:

12345 Sub Find_String_Cell ()Dacă InStr (Interval ("B2"). Valoare, "Dr.")> 0 AtunciInterval ("C2"). Valoare = "Doctor"End IfSfârșitul Sub

Sau buclați printr-o gamă de celule pentru a testa dacă celulele conțin text:

12345678910 Sub Search_Range_For_Text ()Dim celula ca intervalPentru fiecare celulă din interval ("b2: b6")Dacă InStr (cell.Value, "Dr.")> 0 Atuncicell.Offset (0, 1) .Value = "Doctor"End IfUrmătoarea celulăSfârșitul Sub

Găsiți poziția unui personaj într-un șir

Acest cod va găsi poziția unui singur caracter într-un șir și va atribui poziția unei variabile:

1234 Sub Find_Char ()Dim n As Longn = InStr („Aici Uită-te aici”, „L”)Sfârșitul Sub

Căutați șir pentru Word

Acest cod va căuta un șir pentru un cuvânt:

12345678910 Sub Search_String_For_Word ()Dim n As Longn = InStr („Uită-te aici”, „Uită-te”)Dacă n = 0 AtunciMsgBox „Cuvântul nu a fost găsit”AltfelMsgBox "Cuvânt găsit în poziție:" & nEnd IfSfârșitul Sub

Dacă variabila conține șir

Acest cod va testa dacă o variabilă șir conține un șir de text:

12345678 Sub Variable_Contains_String ()Dim str As Stringstr = "Uită-te aici"Dacă InStr (str, "Aici")> 0 AtunciMsgBox "Aici găsit!"End IfSfârșitul Sub

Instr și funcția din stânga

Instrumentele pot fi utilizate împreună cu alte funcții de text, cum ar fi Stânga, Dreapta, Len și Mid pentru a tăia textul.

Cu funcția Stânga puteți reda textul înainte de un șir de text:

1234567891011 Sub Instr_Left ()Dim str As StringDim n As Longstr = "Uită-te aici"n = InStr (str, "Aici")MsgBox Stânga (str, n - 1)Sfârșitul Sub

Utilizarea Instr în Microsoft Access VBA

Toate exemplele de mai sus funcționează exact la fel în Access VBA ca în Excel VBA.

Pentru a afla mai multe, citiți articolul nostru: Funcțiile de text VBA

Vei ajuta la dezvoltarea site-ului, partajarea pagina cu prietenii

wave wave wave wave wave