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