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