Pronađi tekst u nizu (funkcija INSTR) - Primjeri VBA koda

INSTR funkcija

VBA Instr funkcija provjerava nalazi li se niz teksta u drugom nizu teksta. Vraća 0 ako tekst nije pronađen. U suprotnom slučaju vraća položaj znaka na kojem se nalazi tekst.

Funkcija Instr radi točno šibice. VBA Like Operator može se umjesto toga koristiti za izvođenje netočnih podudaranja / podudaranja uzoraka pomoću zamjenskih znakova.

Primjer instr

Sljedeći isječak koda traži riječ "Traži" u nizu "Traži u ovom nizu". Funkcija Instr vraća 1 jer se tekst nalazi na prvom mjestu.

123 Sub FindSomeText ()MsgBox InStr ("Pogledaj u ovom nizu", "Pogledaj")Kraj podm

Ovaj drugi primjer vraća 7 jer se tekst nalazi na sedmom mjestu:

123 Sub FindSomeText2 ()MsgBox InStr ("Ne gledaj u ovom nizu", "Pogledaj")Kraj podm

Važno! Instr funkcija je osjetljivo na velika i mala slova prema zadanim postavkama. To znači da se "izgled" neće podudarati s "Pogled". Da bi test bio osjetljiv na test, pročitajte u nastavku.

Instr Sintaksa

Sintaksa funkcije Instr je sljedeća:

1 Instr ([početak], niz, podniz, [usporedi])

[početak] (izborno) - Ovaj izborni argument početna je pozicija pretraživanja. Unesite 1 za početak pretraživanja s mjesta 1 (ili ostavite prazno). Unesite 5 za početak pretraživanja s položaja 5. Važno! INSTR funkcija izračunava položaj znaka brojeći od 1 NE sa pozicije [start].

niz - Niz teksta za pretraživanje.

podniz - Niz teksta koji treba pronaći u primarnom nizu.

[usporedi] (izborno) - Prema zadanim postavkama, Instr razlikuje velika i mala slova. Postavljanjem ovog argumenta Instr Case možete učiniti neosjetljivim:

Argument vb vrijednost

Argument Integer Opis
vbBinaryCompare

0

(Zadano) Razlikovanje velikih i malih slova

vbTextCompare

1

Ne razlikuje velika i mala slova

vbDatabaseCompare

2

Samo MS Access. Za usporedbu koristi podatke u bazi podataka.

Instr početni položaj

Početni položaj Instr omogućuje vam da označite položaj znaka na kojem ćete započeti pretraživanje. Imajte na umu, međutim, izlaz Instr uvijek će se brojati od 1.

Ovdje postavljamo početni položaj na 3 da preskočimo prvi B:

123 Sub Instr_StartPosition ()MsgBox InStr (3, "ABC ABC", "B")Kraj podm

Rezultat je 6 jer je drugi B šesti znak u nizu.

INSTR test ne razlikuje velika i mala slova

Prema zadanim postavkama, VBA tretira "L" različito od "l". Drugim riječima, VBA razlikuje velika i mala slova. To vrijedi za sve tekstualne funkcije. Da biste učinili VBA osjetljivim na velika i mala slova, postavite argument [usporedi] na 1 ili vbTextCompare.

123 Javni pod FindText_IgnoreCase ()MsgBox InStr (1, "Ne gledaj u ovaj niz", "pogledaj", vbTextCompare)Kraj podm

Alternativno, možete dodati opciju Usporedi tekst na vrh modula koda:

1 Opcija Usporedi tekst
12345 Opcija Usporedi tekstJavni pod -FindText_IgnoreCase2 ()MsgBox InStr ("Ne gledaj u ovaj niz", "pogledaj")Kraj podm

Opcija Usporedi tekst utjecat će na sav kôd u tom modulu. Osobno ovo stavljam na vrh svakog modula koji se bavi tekstom jer me nikad ne zanimaju razlike u veličini slova.

InstrRev funkcija

Funkcija Instr pretražuje s lijeve strane. Umjesto toga možete pretraživati ​​s desne strane pomoću funkcije InstrRev. Funkcija InstrRev radi vrlo slično funkciji Instr.

123 Sub FindSomeText_FromRight ()MsgBox InStrRev ("Pogledaj u ovom nizu", "Pogledaj")Kraj podm

Baš kao i funkcija Instr, ovo će vratiti 1 jer postoji samo jedna instanca "Pogledaj" u tekstu. Ali ako dodamo drugi "Pogled", vidjet ćete da on vraća položaj krajnje desnog "Pogleda":

123 Sub FindSomeText_FromRight ()MsgBox InStrRev ("Pogledaj u ovom nizu Pogledaj", "Pogledaj")Kraj podm

Zatim ćemo pregledati još primjera Instr.

Primjeri u nizu

Ako niz sadrži podniz

Ovdje ćemo koristiti naredbu If za provjeru sadrži li niz podniz teksta:

123456789 Javni podnalaz FindSomeText ()Ako je InStr ("Pogledaj u ovom nizu", "pogledaj") = 0 ZatimMsgBox "Nema podudaranja"DrugoMsgBox "Najmanje jedno podudaranje"Završi akoKraj podm

Pronađi tekstualni niz u ćeliji

U ćeliji možete pronaći i niz:

12345 Sub Find_String_Cell ()Ako je InStr (Raspon ("B2"). Vrijednost, "Dr.")> 0 ZatimRaspon ("C2"). Vrijednost = "Liječnik"Završi akoKraj podm

Ili prođite kroz niz ćelija da biste provjerili sadrže li ćelije neki tekst:

12345678910 Pod pretraživanje_Raspon_za_tekst ()Prigušena ćelija kao rasponZa svaku ćeliju u rasponu ("b2: b6")Ako je InStr (cell.Value, "Dr.")> 0 Zatimcell.Offset (0, 1) .Value = "Doktor"Završi akoSljedeća ćelijaKraj podm

Pronađite poziciju lika u nizu

Ovaj kôd će pronaći položaj jednog znaka u nizu i dodijeliti položaj varijabli:

1234 Sub Find_Char ()Dim n As Longn = InStr ("Ovdje pogledajte ovdje", "L")Kraj podm

Traži niz za Word

Ovaj će kôd tražiti riječ u nizu:

12345678910 Sub Search_String_For_Word ()Dim n As Longn = InStr ("Ovdje pogledajte ovdje", "Pogledajte")Ako je n = 0 TadaMsgBox "Riječ nije pronađena"DrugoMsgBox "Riječ pronađena na mjestu:" & nZavrši akoKraj podm

Ako varijabla sadrži niz

Ovaj će kôd testirati sadrži li varijabla niza tekst:

12345678 Pod varijabla_Sadrži_String ()Dim str Kao nizstr = "Pogledaj ovdje"Ako je InStr (str, "Ovdje")> 0 TadaMsgBox "Ovdje je pronađeno!"Završi akoKraj podm

Instr i lijeva funkcija

Instr se može koristiti zajedno s drugim tekstualnim funkcijama kao što su Lijevo, Desno, Len i Srednje za obrezivanje teksta.

S funkcijom Lijevo možete ispisati tekst prije niza teksta:

1234567891011 Sub Instr_Left ()Dim str Kao nizDim n As Longstr = "Pogledaj ovdje"n = InStr (str, "Ovdje")MsgBox lijevo (str, n - 1)Kraj podm

Korištenje Instr -a u Microsoft Access VBA

Svi gornji primjeri rade potpuno isto u Access VBA kao i u Excel VBA.

Da biste saznali više, pročitajte naš članak: VBA funkcije teksta

Vi ćete pomoći u razvoju web stranice, dijeljenje stranicu sa svojim prijateljima

wave wave wave wave wave