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