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