Etsi teksti merkkijonosta (INSTR -toiminto) - Esimerkkejä VBA -koodista

INSTR -toiminto

VBA Instr -toiminto tarkistaa, löytyykö tekstijono toisesta tekstimerkkijonosta. Se palauttaa arvon 0, jos tekstiä ei löydy. Muussa tapauksessa se palauttaa merkin sijainnin, josta teksti löytyy.

Instr -toiminto toimii tarkka Ottelut. VBA Like -operaattoria voidaan käyttää sen sijaan suorittamaan epätarkkoja vastaavuuksia / kuvioiden vastaavuuksia käyttämällä yleismerkkejä.

Esimerkki

Seuraava koodinpätkä etsii sanaa "Look" merkkijonosta "Look in this string". Instr -funktio palauttaa 1, koska teksti löytyy ensimmäisestä sijainnista.

123 Osa FindSomeText ()MsgBox InStr ("Katso tästä merkkijonosta", "Katso")End Sub

Tämä toinen esimerkki palauttaa arvon 7, koska teksti löytyy seitsemännestä sijainnista alkaen:

123 Osa FindSomeText2 ()MsgBox InStr ("Älä katso tästä merkkijonosta", "Katso")End Sub

Tärkeä! Instr -toiminto on kirjainkoolla oletuksena. Tämä tarkoittaa, että "ulkonäkö" ei vastaa "Katso". Jos haluat, että testi ei erota kirjainkoosta, lue alla.

Instr. Syntaksi

Instr -funktion syntaksi on seuraava:

1 Instr ([aloita], merkkijono, alimerkkijono, [vertaa])

[aloita] (valinnainen) - Tämä valinnainen argumentti on haun lähtökohta. Syötä 1 aloittaaksesi haun paikasta 1 (tai jätä tyhjäksi). Syötä 5 aloittaaksesi haun paikasta 5. Tärkeä! INSTR -toiminto laskee merkin sijainnin laskemalla 1: stä EI [aloitus] -asennosta.

merkkijono - Tekstin merkkijono, josta etsitään.

alimerkkijono - Ensisijaisesta merkkijonosta löydettävä tekstijono.

[vertaa] (valinnainen) - Oletuksena Instr erottaa isot ja pienet kirjaimet. Kun asetat tämän argumentin, voit tehdä kirjainkoosta välinpitämättömän:

Argumentti vb Arvo

Argumentti kokonaisluku Kuvaus
vbBinaryCompare

0

(Oletus) Kirjainkoolla on merkitystä

vbTextCompare

1

Ei kirjainkoolla

vbDatabaseCompare

2

Vain MS Access. Käyttää tietokannan tietoja vertailun suorittamiseen.

Instrumentin aloitusasento

Instr -aloitusaseman avulla voit ilmoittaa merkin sijainnin, josta aloitat haun. Muista kuitenkin, että Instr -lähtö lasketaan aina yhdestä.

Tässä asetamme aloitusasennon 3 ohittaaksesi ensimmäisen B: n:

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

Tulos on 6, koska toinen B on merkkijonon 6. merkki.

Kirjainkoolla erottava INSTR-testi

Oletuksena VBA käsittelee kirjainta L eri kuin l. Toisin sanoen VBA erottaa isot ja pienet kirjaimet. Tämä pätee kaikkiin tekstitoimintoihin. Jos haluat tehdä VBA-kirjainkoosta eron, aseta [vertaa] -argumentiksi arvoksi 1 tai vbTextCompare.

123 Julkinen osa FindText_IgnoreCase ()MsgBox InStr (1, "Älä katso tästä merkkijonosta", "katso", vbTextCompare)End Sub

Vaihtoehtoisesti voit lisätä vaihtoehdon Vertaa tekstiä koodimoduulin yläosaan:

1 Vaihtoehto Vertaa tekstiä
12345 Vaihtoehto Vertaa tekstiäJulkinen osa FindText_IgnoreCase2 ()MsgBox InStr ("Älä katso tästä merkkijonosta", "katso")End Sub

Vaihtoehto Vertaa tekstiä vaikuttaa koko kyseisen moduulin koodiin. Henkilökohtaisesti sijoitan tämän minkä tahansa tekstiä käsittelevän moduulin yläosaan, koska en koskaan välitä tapausten eroista.

InstrRev -toiminto

Instr -toiminto etsii vasemmalta. Sen sijaan voit etsiä oikealta käyttämällä InstrRev -toimintoa. InstrRev -toiminto toimii hyvin samalla tavalla kuin Instr -toiminto.

123 Osa FindSomeText_FromRight ()MsgBox InStrRev ("Katso tästä merkkijonosta", "Katso")End Sub

Aivan kuten Instr -funktio, tämä palauttaa arvon 1, koska tekstissä on vain yksi "Look" -esitys. Mutta jos lisäämme toisen "Lookin", näet, että se palauttaa oikeanpuoleisimman "Look" -kohdan:

123 Osa FindSomeText_FromRight ()MsgBox InStrRev ("Katso tästä merkkijonosta", "Katso")End Sub

Seuraavaksi tarkastelemme lisää Instr -esimerkkejä.

InString -esimerkkejä

Jos merkkijono sisältää alimerkkijonon

Tässä käytämme If -käskyä testataksesi, sisältääkö merkkijono tekstin alimerkkijonon:

123456789 Julkinen osahakuSomeText ()Jos InStr ("Katso tästä merkkijonosta", "katso") = 0 SittenMsgBox "Ei osumaa"MuuMsgBox "Vähintään yksi ottelu"Loppu JosEnd Sub

Etsi tekstimerkkijono solusta

Löydät myös merkkijonon solusta:

12345 Osa Find_String_Cell ()Jos InStr (alue ("B2"). Arvo, "Dr.")> 0 SittenAlue ("C2"). Arvo = "Lääkäri"Loppu JosEnd Sub

Tai kierrä solualue läpi ja testaa, sisältävätkö solut tekstiä:

12345678910 Alahaun_alueen_tekstin teksti ()Himmennä solu alueenaJokaiselle alueen solulle ("b2: b6")Jos InStr (solu.arvo, "Dr.")> 0 Sittencell.Offset (0, 1) .Value = "Lääkäri"Loppu JosSeuraava soluEnd Sub

Etsi merkin sijainti merkkijonosta

Tämä koodi löytää jonon yhden merkin sijainnin ja määrittää sijainnin muuttujalle:

1234 Osa Find_Char ()Dim n yhtä pitkän = InStr ("Katso täältä", "L")End Sub

Etsi merkkijono Wordille

Tämä koodi etsii sanaa merkkijonosta:

12345678910 Alahaun_merkkijono_sanan ()Dim n yhtä pitkän = InStr ("Katso täältä", "Katso")Jos n = 0 niinMsgBox "Sanaa ei löydy"MuuMsgBox "Sana löytyi sijainnista:" & nLoppu JosEnd Sub

Jos muuttuja sisältää merkkijonon

Tämä koodi testaa, sisältääkö merkkijonomuuttuja tekstimerkkijonon:

12345678 Alamuuttuja_sisältää_merkkijono ()Dim str Kuten merkkijonostr = "Katso tästä"Jos InStr (str, "Here")> 0 SittenMsgBox "Täältä löytyi!"Loppu JosEnd Sub

Instr ja vasen toiminto

Instr -näppäintä voidaan käyttää muiden tekstitoimintojen, kuten vasen-, oikea-, Len- ja Mid -tekstin leikkaamiseen.

Vasen -toiminnolla voit tulostaa tekstin ennen tekstimerkkijonoa:

1234567891011 Sub Instr_Left ()Dim str Kuten merkkijonoDim n yhtä pitkästr = "Katso tästä"n = InStr (str, "Tässä")MsgBox Vasen (str, n - 1)End Sub

Instrin käyttö Microsoft Access VBA: ssa

Kaikki yllä olevat esimerkit toimivat täsmälleen samalla tavalla Access VBA: ssa kuin Excel VBA: ssa.

Lisätietoja on artikkelissamme: VBA -tekstitoiminnot

Tulet auttaa kehittämään sivuston jakaminen sivu ystävillesi

wave wave wave wave wave