Funkcija INSTR
Funkcija „VBA Instr“ patikrina, ar teksto eilutė randama kitoje teksto eilutėje. Jei tekstas nerastas, jis grąžina 0. Priešingu atveju grąžinama simbolio vieta, kurioje randamas tekstas.
Instr funkcija atlieka tiksliai degtukai. VBA kaip operatorius gali būti naudojamas tiksliam atitikimui / modelio atitikimui atlikti naudojant pakaitos simbolius.
Instr pavyzdys
Šis kodo fragmentas ieško žodžio „Look“ eilutėje „Look in this string“. Funkcija „Instr“ grąžina 1, nes tekstas yra pirmoje vietoje.
123 | Sub FindSomeText ()„MsgBox InStr“ („Pažvelkite į šią eilutę“, „Pažiūrėkite“)Pabaiga Sub |
Šis antrasis pavyzdys grąžina 7, nes tekstas randamas pradedant 7 pozicija:
123 | Sub FindSomeText2 ()„MsgBox InStr“ („Nežiūrėkite į šią eilutę“, „Pažiūrėkite“)Pabaiga Sub |
Svarbu! Instr funkcija yra didžiosios ir mažosios raidės pagal nutylėjimą. Tai reiškia, kad „išvaizda“ nesutampa su „Look“. Kad testo nejautrintų didžiosios ir mažosios raidės, skaitykite toliau.
Instr. Sintaksė
Funkcijos „Instr“ sintaksė yra tokia:
1 | Instr ([pradžia], eilutė, antrinė eilutė, [palyginti]) |
[pradėti] (neprivaloma) - Šis neprivalomas argumentas yra pradinė paieškos padėtis. Įveskite 1, kad pradėtumėte paiešką iš 1 pozicijos (arba palikite tuščią). Įveskite 5, kad pradėtumėte paiešką iš 5 pozicijos. Svarbu! Funkcija INSTR apskaičiuoja simbolių padėtį, skaičiuodama nuo 1 NE iš [pradžios] padėties.
eilutė - teksto eilutė, kurioje reikia ieškoti.
antrinė eilutė - teksto eilutė, kurią reikia rasti pirminėje eilutėje.
[palyginti] (neprivaloma) - Pagal numatytuosius nustatymus Instr skiria didžiąsias ir mažąsias raides. Nustatę šį argumentą, „Instr Case“ gali būti nejautrus:
Argumentas vb Vertė | Argumentas sveikasis skaičius | apibūdinimas |
vbBinaryCompare |
0 | (Numatytoji reikšmė) Skiriamos didžiosios ir mažosios raidės |
vbTextCompare |
1 | Neskiria didžiosios ir mažosios raidės |
vbDatabaseCompare |
2 | Tik MS prieiga. Palyginimui atlikti naudoja duomenų bazės informaciją. |
Instr. Pradinė padėtis
Įvesties pradžios padėtis leidžia nurodyti simbolio vietą, kurioje pradėsite paiešką. Tačiau atminkite, kad „Instr“ išvestis visada bus skaičiuojama nuo 1.
Čia mes nustatome pradinę padėtį 3, kad praleistume pirmąjį B:
123 | Antrinė Instr_StartPosition ()„MsgBox InStr“ (3, „ABC ABC“, „B“)Pabaiga Sub |
Rezultatas yra 6, nes antrasis B yra 6 eilutės simbolis.
Didžiosios ir mažosios raidės INSTR testas
Pagal numatytuosius nustatymus VBA „L“ traktuoja kitaip nei „l“. Kitaip tariant, VBA skiria didžiosios ir mažosios raidės. Tai pasakytina apie visas teksto funkcijas. Jei norite, kad VBA neskirtų didžiųjų ir mažųjų raidžių, nustatykite argumentą [palyginti] į 1 arba vbTextCompare.
123 | Viešas antrinis „FindText_IgnoreCase“ ()„MsgBox InStr“ (1, „Nežiūrėkite šioje eilutėje“, „atrodykite“, „vbTextCompare“)Pabaiga Sub |
Arba savo kodo modulio viršuje galite pridėti parinktį Palyginti tekstą:
1 | Parinktis Lyginti tekstą |
12345 | Parinktis Lyginti tekstąViešas antrinis „FindText_IgnoreCase2“ ()„MsgBox InStr“ („Nežiūrėkite šioje eilutėje“, „žiūrėkite“)Pabaiga Sub |
Parinkties palyginimo tekstas paveiks visą to modulio kodą. Aš asmeniškai įdedu tai į bet kurio su tekstu susijusio modulio viršuje, nes man niekada nerūpi atvejų skirtumai.
Funkcija „InstrRev“
Instr funkcija ieško iš kairės. Vietoj to galite ieškoti iš dešinės, naudodami funkciją „InstrRev“. Funkcija „InstrRev“ veikia labai panašiai kaip „Instr“ funkcija.
123 | Sub FindSomeText_FromRight ()„MsgBox InStrRev“ („Pažvelkite į šią eilutę“, „Pažiūrėkite“)Pabaiga Sub |
Kaip ir funkcija „Instr“, ji grąžins 1, nes tekste yra tik vienas „Look“ pavyzdys. Bet jei pridėsime antrą „žvilgsnį“, pamatysite, kad jis grąžina dešiniojo „žvilgsnio“ poziciją:
123 | Sub FindSomeText_FromRight ()„MsgBox InStrRev“ („Pažvelkite į šią eilutę“, „Pažiūrėkite“)Pabaiga Sub |
Toliau apžvelgsime daugiau „Instr“ pavyzdžių.
„InString“ pavyzdžiai
Jei eilutėje yra antrinė eilutė
Čia mes naudosime teiginį „If“, kad patikrintume, ar eilutėje yra teksto antrinė eilutė:
123456789 | Viešas poskyris „FindTomeText“ ()Jei „InStr“ („Pažvelkite į šią eilutę“, „atrodykite“) = 0 Tada„MsgBox“ neatitinkaKitas„MsgBox“ Bent vienos rungtynėsPabaiga JeiPabaiga Sub |
Raskite teksto eilutę langelyje
Eilutę taip pat galite rasti langelyje:
12345 | Antras elementas Find_String_Cell ()Jei InStr (Diapazonas ("B2"). Reikšmė, "Dr.")> 0 TadaDiapazonas ("C2"). Reikšmė = "Gydytojas"Pabaiga JeiPabaiga Sub |
Arba peržiūrėkite daugybę langelių, kad patikrintumėte, ar langeliuose yra tam tikras tekstas:
12345678910 | Antrinis paieškos_ diapazonas_tekstui ()Šviesos langelis kaip diapazonasKiekvienam diapazono langeliui ("b2: b6")Jei InStr (cell.Value, "Dr.")> 0 Tadacell.Offset (0, 1) .Value = "Gydytojas"Pabaiga JeiKitas langelisPabaiga Sub |
Raskite simbolio poziciją eilutėje
Šis kodas suras vieno simbolio poziciją eilutėje ir priskirs poziciją kintamajam:
1234 | „Find FindChar“ ()Dim n Kaip ilgain = „InStr“ („Čia žiūrėk čia“, „L“)Pabaiga Sub |
„Word“ paieškos eilutė
Šis kodas ieškos žodžio eilutės:
12345678910 | Antroji paieška_eilė_už žodžio ()Dim n Kaip ilgain = „InStr“ („Čia žiūrėk čia“, „Žiūrėk“)Jei n = 0 Tada„MsgBox“ žodis nerastasKitasMsgBox "Žodis rastas pozicijoje:" & nPabaiga JeiPabaiga Sub |
Jei kintamajame yra eilutė
Šis kodas patikrins, ar eilutės kintamajame yra teksto eilutė:
12345678 | Antrasis kintamasis_turinys_styginė ()Dim str As Stringstr = "Žiūrėk čia"Jei InStr (str, „Čia“)> 0 TadaMsgBox "Čia rasta!"Pabaiga JeiPabaiga Sub |
Instr ir kairioji funkcija
„Instr“ gali būti naudojamas kartu su kitomis teksto funkcijomis, tokiomis kaip kairė, dešinė, „Len“ ir „Mid“, norint apkarpyti tekstą.
Naudodami funkciją Kairė galite išvesti tekstą prieš teksto eilutę:
1234567891011 | Įvesties kairė ()Dim str As StringDim n Kaip ilgaistr = "Žiūrėk čia"n = InStr (str, „Čia“)„MsgBox“ kairėn (str., N - 1)Pabaiga Sub |
„Instr“ naudojimas „Microsoft Access VBA“
Visi aukščiau pateikti pavyzdžiai „Access VBA“ veikia lygiai taip pat, kaip „Excel VBA“.
Norėdami sužinoti daugiau, perskaitykite mūsų straipsnį: VBA teksto funkcijos