Poišči besedilo v nizu (funkcija INSTR) - Primeri kode VBA

Funkcija INSTR

Funkcija VBA Instr preveri, ali je niz besedila v drugem nizu besedila. Če besedila ne najde, vrne 0. V nasprotnem primeru vrne položaj znaka, kjer je besedilo.

Funkcija Instr deluje natančno ujema. Operater VBA Like Operator lahko namesto tega izvedete netočna ujemanja / ujemanje vzorcev z uporabo nadomestnih znakov.

Primer instr

Naslednji delček kode išče v nizu »Poglej v tem nizu« besedo »Poglej«. Funkcija Instr vrne 1, ker je besedilo na prvem mestu.

123 Sub FindSomeText ()MsgBox InStr ("Poglej v tem nizu", "Poglej")End Sub

Ta drugi primer vrne 7, ker se besedilo začne na sedmem mestu:

123 Sub FindSomeText2 ()MsgBox InStr ("Ne glej v tem nizu", "Poglej")End Sub

Pomembno! Funkcija Instr je velike in male črke privzeto. To pomeni, da se »pogled« ne bo ujemal z »pogled«. Če želite, da preskusni primeri niso občutljivi, preberite spodaj.

Sintaksa Instr

Sintaksa funkcije Instr je naslednja:

1 Instr ([začetek], niz, podniz, [primerjaj])

[start] (neobvezno) - Ta izbirni argument je začetni položaj iskanja. Vnesite 1, da začnete iskanje s položaja 1 (ali pustite prazno). Vnesite 5, da začnete iskanje s položaja 5. Pomembno! Funkcija INSTR izračuna položaj znakov tako, da šteje od 1 NE iz položaja [start].

vrvica - Niz besedila za iskanje.

podniz - Niz besedila v primarnem nizu.

[primerjaj] (neobvezno) - Instr privzeto razlikuje velike in male črke. Če nastavite ta argument, lahko naredite Instr Case neobčutljive:

Argument vb Vrednost

Argument Integer Opis
vbBinaryCompare

0

(Privzeto) Občutljivo na velike in male črke

vbTextCompare

1

Ni občutljivo na velike in male črke

vbDatabaseCompare

2

Samo MS Access. Za primerjavo uporablja podatke v zbirki podatkov.

Instr začetni položaj

Začetni položaj Instr vam omogoča, da označite položaj znakov, kjer boste začeli iskanje. Upoštevajte pa, da bo izhod Instr vedno štel od 1.

Tukaj nastavimo začetni položaj na 3, da preskočimo prvi B:

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

Rezultat je 6, ker je drugi B šesti znak v nizu.

INSTR test, ki ne razlikuje med velikimi in malimi črkami

VBA privzeto obravnava "L" drugače kot "l". Z drugimi besedami, VBA razlikuje velike in male črke. To velja za vse besedilne funkcije. Če želite, da VBA ne razlikuje med velikimi in malimi črkami, nastavite argument [primerjaj] na 1 ali vbTextCompare.

123 Javni podnabor FindText_IgnoreCase ()MsgBox InStr (1, "Ne glej v tem nizu", "poglej", vbTextCompare)End Sub

Druga možnost je, da na vrh kode modula dodate možnost Primerjaj besedilo:

1 Možnost Primerjaj besedilo
12345 Možnost Primerjaj besediloJavni pod Find FindText_IgnoreCase2 ()MsgBox InStr ("Ne glej v tem nizu", "poglej")End Sub

Možnost Primerjaj besedilo bo vplivala na vso kodo v tem modulu. Osebno to postavim na vrh katerega koli modula, ki obravnava besedilo, ker me nikoli ne zanimajo razlike v velikih in malih črkah.

InstrRev funkcija

Funkcija Instr išče z leve strani. Namesto tega lahko iščete z desne strani s funkcijo InstrRev. Funkcija InstrRev deluje zelo podobno kot funkcija Instr.

123 Sub FindSomeText_FromRight ()MsgBox InStrRev ("Poglej v tem nizu", "Poglej")End Sub

Tako kot funkcija Instr bo tudi to vrnilo 1, ker je v besedilu samo en primerek »Poglej«. Če pa dodamo še en "Pogled", boste videli, da vrne položaj najbolj desnega "Pogleda":

123 Sub FindSomeText_FromRight ()MsgBox InStrRev ("Poglej v tem nizu Poglej", "Poglej")End Sub

Nato bomo pregledali več primerov Instr.

Primeri InString

Če niz vsebuje podniz

Tukaj bomo uporabili stavek If za preverjanje, ali niz vsebuje podniz besedila:

123456789 Javno pomožno iskanjeSomeText ()Če je InStr ("Poglej v tem nizu", "poglej") = 0 PotemMsgBox "Ni ujemanja"Sicer paMsgBox "Vsaj eno ujemanje"Konec ČeEnd Sub

Poišči besedilni niz v celici

V celici lahko najdete tudi niz:

12345 Sub Find_String_Cell ()Če je InStr (Razpon ("B2"). Vrednost, "Dr.")> 0 PotemRazpon ("C2"). Vrednost = "Zdravnik"Konec ČeEnd Sub

Ali pa preglejte vrsto celic, da preverite, ali celice vsebujejo nekaj besedila:

12345678910 Sub Search_Range_For_Text ()Zatemni celico kot obsegZa vsako celico v dosegu ("b2: b6")Če je InStr (cell.Value, "Dr.")> 0 Potemcell.Offset (0, 1) .Value = "Zdravnik"Konec ČeNaslednja celicaEnd Sub

Poiščite položaj znaka v nizu

Ta koda bo našla položaj posameznega znaka v nizu in položaj dodelila spremenljivki:

1234 Sub Find_Char ()Dim n As Longn = InStr ("Tukaj poglejte tukaj", "L")End Sub

Iskalni niz za Word

Ta koda bo iskala besedo v nizu:

12345678910 Sub Search_String_For_Word ()Dim n As Longn = InStr ("Tukaj poglej tukaj", "Poglej")Če je n = 0, potemMsgBox "Besede ni mogoče najti"Sicer paMsgBox "Beseda je bila najdena na mestu:" & nKonec ČeEnd Sub

Če spremenljivka vsebuje niz

Ta koda bo preverila, ali spremenljivka niza vsebuje niz besedila:

12345678 Pod spremenljivka_Contains_String ()Dim str kot nizstr = "Poglej tukaj"Če je InStr (str, "Tukaj")> 0 PotemMsgBox "Tukaj je najdeno!"Konec ČeEnd Sub

Instr in leva funkcija

Instr lahko uporabite skupaj z drugimi besedilnimi funkcijami, kot so Left, Right, Len in Mid, da obrežete besedilo.

S funkcijo Levo lahko iznesete besedilo pred nizom besedila:

1234567891011 Sub Instr_Left ()Dim str kot nizDim n As Longstr = "Poglej tukaj"n = InStr (str, "Tukaj")MsgBox Levo (str, n - 1)End Sub

Uporaba Instr v Microsoft Access VBA

Vsi zgornji primeri delujejo popolnoma enako v Access VBA kot v Excelu VBA.

Če želite izvedeti več, preberite naš članek: Besedilne funkcije VBA

Vam bo pomagal razvoj spletnega mesta, ki si delijo stran s svojimi prijatelji

wave wave wave wave wave