Rasti tekstą eilutėje (funkcija INSTR) - VBA kodo pavyzdžiai

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

Padėsite svetainės plėtrą, dalintis puslapį su draugais

wave wave wave wave wave