Stringist teksti leidmine (funktsioon INSTR) - VBA koodi näited

Funktsioon INSTR

Funktsioon VBA Instr kontrollib, kas teises tekstistringis leidub tekstistring. Tagastab 0, kui teksti ei leita. Vastasel juhul tagastab see tähemärgi positsiooni, kust tekst leitakse.

Funktsioon Instr toimib täpne tikud. Selle asemel saab VBA Like Operaatorit kasutada metamärkide abil ebatäpse vaste / mustri sobitamiseks.

Instr näide

Järgmine koodilõik otsib stringist „Vaata sellest stringist” sõna „Vaata”. Funktsioon Instr tagastab 1, kuna tekst on esimeses positsioonis.

123 Sub FindSomeText ()MsgBox InStr ("Vaata seda stringi", "Vaata")End Sub

See teine ​​näide tagastab 7, kuna tekst leitakse alates 7. kohast:

123 Sub FindSomeText2 ()MsgBox InStr ("Ära vaata sellesse stringisse", "Vaata")End Sub

Tähtis! Funktsioon Instr tõstutundlik vaikimisi. See tähendab, et "välimus" ei sobi sõnaga "Vaata". Testi tõstutundetuks muutmiseks lugege allpool.

Sisestussüntaks

Funktsiooni Instr süntaks on järgmine:

1 Instr ([algus], string, alamstring, [võrdlus])

[algus] (valikuline) - See valikuline argument on otsingu lähtepositsioon. Otsingu alustamiseks 1. positsioonist sisestage 1 (või jätke tühjaks). Otsimise alustamiseks 5. kohast sisestage 5. Tähtis! Funktsioon INSTR arvutab märgi asukoha, lugedes 1 -st EI [stardipositsioonist].

string - tekstistring, kust otsida.

alamstring - tekstistring, mille peate esmasest stringist leidma.

[võrdle] (valikuline) - Vaikimisi on Instr tõstutundlik. Selle argumendi määramisega saate muuta tähestiku tühiku tundmatuks:

Argument vb Väärtus

Argumendi täisarv Kirjeldus
vbBinaryCompare

0

(Vaikimisi) tõstutundlik

vbTextCompare

1

Ei ole tõstutundlik

vbDatabaseCompare

2

Ainult MS -i juurdepääs. Kasutab võrdluse tegemiseks andmebaasis olevat teavet.

Instrumendi stardipositsioon

Intri alguspositsioon võimaldab teil märkida märgi positsiooni, kust otsingut alustate. Pidage siiski meeles, et Intri väljundit loetakse alati 1 -st.

Siin määrasime algpositsiooni 3, et esimene B vahele jätta:

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

Tulemuseks on 6, sest teine ​​B on stringi 6. märk.

Kirja tõstutundlik INSTR-test

Vaikimisi käsitleb VBA tähte L erinevalt tähest. Teisisõnu, VBA on tõstutundlik. See kehtib kõigi tekstifunktsioonide kohta. VBA tõstutundetundlikkuse muutmiseks määrake [võrdle] argumendiks 1 või vbTextCompare.

123 Avalik alamotsingText_IgnoreCase ()MsgBox InStr (1, "Ära vaata seda stringi", "vaata", vbTextCompare)End Sub

Teise võimalusena saate oma koodimooduli ülaossa lisada suvandi Võrdle teksti:

1 Valik Võrdle teksti
12345 Valik Võrdle tekstiAvalik alamotsingText_IgnoreCase2 ()MsgBox InStr ("Ära vaata sellesse stringisse", "vaata")End Sub

Valik Võrdle teksti mõjutab kogu selle mooduli koodi. Mina isiklikult asetan selle tekstiga tegeleva mooduli ülaossa, sest mind ei huvita kunagi juhtumite erinevused.

Funktsioon InstrRev

Funktsioon Instr otsib vasakult. Selle asemel saate otsida paremalt, kasutades funktsiooni InstrRev. Funktsioon InstrRev töötab väga sarnaselt funktsiooniga Instr.

123 AlamotsingSomeText_FromRight ()MsgBox InStrRev ("Vaata seda stringi", "Vaata")End Sub

Nagu funktsioon Instr, tagastab see ka 1, kuna tekstis on ainult üks eksemplar „Vaata”. Kuid kui lisame teise "Vaata", näete, et see tagastab kõige parema välimuse positsiooni:

123 AlamotsingSomeText_FromRight ()MsgBox InStrRev ("Vaata selles stringis Vaata", "Vaata")End Sub

Järgnevalt vaatame läbi rohkem Intri näiteid.

InStringi näited

Kui string sisaldab alamstringi

Siin kasutame lauset If, et testida, kas string sisaldab teksti alamstringi:

123456789 Avalik alamotsingSomeText ()Kui InStr ("Vaata seda stringi", "vaata") = 0 SiisMsgBox "Ei sobi"MuiduMsgBox "Vähemalt üks vaste"Lõpp KuiEnd Sub

Leia lahtrist tekstistring

Lahtrist leiate ka stringi:

12345 Alamotsingu_stringi_rakk ()Kui InStr (Vahemik ("B2"). Väärtus, "Dr.")> 0 SiisVahemik ("C2"). Väärtus = "arst"Lõpp KuiEnd Sub

Või vaadake läbi lahtrite vahemiku, et kontrollida, kas lahtrid sisaldavad teksti:

12345678910 Alamotsingu_vahemiku_teksti tekst ()Hämardage rakk vahemikunaIga lahtri vahemikus ("b2: b6")Kui InStr (cell.Value, "Dr.")> 0 Siiscell.Offset (0, 1) .Value = "Arst"Lõpp KuiJärgmine lahterEnd Sub

Leidke stringist tegelase positsioon

See kood leiab stringi ühe märgi positsiooni ja määrab selle muutujale:

1234 Alamotsingu_karv ()Dim n Nagu pikkn = InStr ("Vaata siit", "L")End Sub

Wordi otsingustring

See kood otsib sõna stringist:

12345678910 Alamotsingu_stringi_sõna ()Dim n Nagu pikkn = InStr ("Siin vaata siia", "Vaata")Kui n = 0, siisMsgBox "Sõna ei leitud"MuiduMsgBox "Sõna leiti asukohast:" & nLõpp KuiEnd Sub

Kui muutuja sisaldab stringi

See kood kontrollib, kas stringimuutuja sisaldab tekstistringi:

12345678 Alammuutuja_Sisaldab_string ()Dim str nagu stringstr = "Vaata siit"Kui InStr (str, "Siin")> 0 SiisMsgBox "Siit leiti!"Lõpp KuiEnd Sub

Instr ja vasak funktsioon

Instrit saab teksti lõikamiseks kasutada koos muude tekstifunktsioonidega, nagu vasak, parem, len ja keskmine.

Funktsiooniga Left saate teksti väljastada enne tekstirida:

1234567891011 Sub Instr_Left ()Dim str nagu stringDim n Nagu pikkstr = "Vaata siit"n = InStr (str, "Siin")MsgBox vasakule (str, n - 1)End Sub

Instr kasutamine Microsoft Access VBA -s

Kõik ülaltoodud näited töötavad Access VBA -s täpselt samamoodi nagu Excel VBA -s.

Lisateabe saamiseks lugege meie artiklit: VBA tekstifunktsioonid

Te aitate arengu ala, jagades leht oma sõpradega

wave wave wave wave wave